Constructors are ranked using these heuristics:
+1. Empty constructors are preferred first.
+2. Constructors where all parameters have default values are preferred next.
+3. Shorter constructors are preferred over longer ones.
+4. Constructors with more parameters that have default values are preferred.
+5. Constructors with more value-type parameters are preferred.
+