How about creating a `Provider::Key` class that handles the key derivation.

```ruby
class Key
  def initialize(key)
    validate_not_nil
  end
 
  def value
    @key.respond_to?(:call) ....
  end
end
```