There are currently several different ways to create a PropertyProvider:
internal TryCreate which is used by TypeFactory to check whether the property can be created since the underlying type might be nulled out by a visitor. This method calls into a private constructor that requires passing the underlying type. It also has an InputModelProperty parameter.
a public constructor that appears to only be used by tests which throws if the underlying type is null
another public constructor that takes a bunch of parameters. This seems to be used for internal helper types. All customer facing types should call through the TypeFactory method.
We can remove the public ctor that is only used by tests, and internalize the other public ctor.
There are currently several different ways to create a PropertyProvider:
We can remove the public ctor that is only used by tests, and internalize the other public ctor.