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