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