# File lib/puppet/node/environment.rb, line 74
74:   def known_resource_types
75:     # This makes use of short circuit evaluation to get the right thread-safe
76:     # per environment semantics with an efficient most common cases; we almost
77:     # always just return our thread's known-resource types.  Only at the start
78:     # of a compilation (after our thread var has been set to nil) or when the
79:     # environment has changed do we delve deeper. 
80:     Thread.current[:known_resource_types] = nil if (krt = Thread.current[:known_resource_types]) && krt.environment != self
81:     Thread.current[:known_resource_types] ||= synchronize {
82:       if @known_resource_types.nil? or @known_resource_types.stale?
83:         @known_resource_types = Puppet::Resource::TypeCollection.new(self)
84:         @known_resource_types.perform_initial_import
85:       end
86:       @known_resource_types
87:     }
88:   end