# File lib/puppet/indirector/indirection.rb, line 93
 93:     def initialize(model, name, options = {})
 94:         @model = model
 95:         @name = name
 96: 
 97:         @cache_class = nil
 98:         @terminus_class = nil
 99: 
100:         raise(ArgumentError, "Indirection %s is already defined" % @name) if @@indirections.find { |i| i.name == @name }
101:         @@indirections << self
102: 
103:         if mod = options[:extend]
104:             extend(mod)
105:             options.delete(:extend)
106:         end
107: 
108:         # This is currently only used for cache_class and terminus_class.
109:         options.each do |name, value|
110:             begin
111:                 send(name.to_s + "=", value)
112:             rescue NoMethodError
113:                 raise ArgumentError, "%s is not a valid Indirection parameter" % name
114:             end
115:         end
116:     end