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