AbstractParameterDataProvider
Base for a provider that supplies values for one parameter type.
T is recovered at runtime from the type argument the subclass supplies, so providesDataFor needs no implementation: class FooProvider : AbstractParameterDataProvider<Foo>() claims Foo parameters and nothing else. Intermediate classes between the subclass and this one are resolved correctly, so a shared base of your own is fine.