I'd be tempted to avoid reflection here if possible.
The `computeResolverType` is private, and returns a class. So it would presumably be easy (without losing any extensibility) to have a method that takes the constructor args and then calls the constructor directly.

If it needs to fall back to figuring out sub-classes or regexes to be truly dynamic, then agree would need reflection.

If we are going to use reflection, then could do with javadoc saying what contract is - e.g. it must have the 3-arg constructor - and how one could take advantage of this dynamic instantiation.