There's a lot of magic in puppet. When a provider declares that it supports a feature, puppet adds several methods to the provider, including a predicate method for testing if the provider supports the feature, e.g.

<pre>
C:\work\puppet>bundle exec irb
irb(main):001:0> require 'puppet'
=> true
irb(main):002:0> require 'puppet/type/package'
=> true
irb(main):003:0> Puppet::Type::Package::ProviderWindows.versionable?
=> true
</pre>