code: public static <T> Constructor<T> bestConstructor(Constructor<T>[] constructors, Object[] args) throws AmbiguousConstructorMatchException {
          return bestConstructor(constructors, collectArgTypes(args));
      }
docs: Selects the best constructor for the given arguments.
  @param <T>
  @param constructors
  @param args
  @return constructor, or {@code null}
  @throws AmbiguousSignatureMatchException if multiple constructors match equally