# File lib/puppet/property.rb, line 249
249:   def set(value)
250:     # Set a name for looking up associated options like the event.
251:     name = self.class.value_name(value)
252: 
253:     call = self.class.value_option(name, :call) || :none
254: 
255:     if call == :instead
256:       call_valuemethod(name, value)
257:     elsif call == :none
258:       # They haven't provided a block, and our parent does not have
259:       # a provider, so we have no idea how to handle this.
260:       self.fail "#{self.class.name} cannot handle values of type #{value.inspect}" unless @resource.provider
261:       call_provider(value)
262:     else
263:       # LAK:NOTE 20081031 This is a change in behaviour -- you could
264:       # previously specify :call => [;before|:after], which would call
265:       # the setter *in addition to* the block.  I'm convinced this
266:       # was never used, and it makes things unecessarily complicated.
267:       # If you want to specify a block and still call the setter, then
268:       # do so in the block.
269:       devfail "Cannot use obsolete :call value '#{call}' for property '#{self.class.name}'"
270:     end
271:   end