# File lib/puppet/util/feature.rb, line 14
14:   def add(name, options = {})
15:     method = name.to_s + "?"
16:     raise ArgumentError, "Feature #{name} is already defined" if self.class.respond_to?(method)
17: 
18:     if block_given?
19:       begin
20:         result = yield
21:       rescue Exception => detail
22:         warn "Failed to load feature test for #{name}: #{detail}"
23:         result = false
24:       end
25:       @results[name] = result
26:     end
27: 
28:     meta_def(method) do
29:       @results[name] = test(name, options) unless @results.include?(name)
30:       @results[name]
31:     end
32:   end