# File lib/puppet/parser/parser_support.rb, line 202
202:     def initvars
203:         @lexer = Puppet::Parser::Lexer.new()
204:         @files = {}
205:         @loaded = []
206:         @loading = {}
207:         @loading.extend(MonitorMixin)
208:         class << @loading
209:             def done_with(item)
210:                 synchronize do 
211:                     delete(item)[:busy].signal if self.has_key?(item) and self[item][:loader] == Thread.current
212:                 end
213:             end
214:             def owner_of(item)
215:                 synchronize do
216:                     if !self.has_key? item
217:                         self[item] = { :loader => Thread.current, :busy => self.new_cond}
218:                         :nobody
219:                       elsif self[item][:loader] == Thread.current
220:                         :this_thread
221:                       else
222:                         flag = self[item][:busy]
223:                         flag.wait
224:                         flag.signal
225:                         :another_thread
226:                     end
227:                 end
228:             end
229:         end
230:     end