code: public static <T> Constructor<T> bestConstructor(Constructor<T>[] constructors, Class<?>[] argTypes) throws AmbiguousConstructorMatchException {
          try {
              return best(constructors, collectSignatures(constructors), collectVarArgs(constructors), argTypes);
          } catch (AmbiguousSignatureMatchException e) {
              throw new AmbiguousConstructorMatchException(e, constructors);
          }
      }
docs: Selects the best constructor for the given argument types.
  @param <T>
  @param constructors
  @param argTypes
  @return constructor, or {@code null}
  @throws AmbiguousSignatureMatchException if multiple constructors match equally