Given a set of constructors, ConstructorResolver picks the one that is public and with the least number of parameters. It should take default parameters into account with this calculation. Additionally, creating a type with a set of parameters should also leverage default parameters where possible.