code: public static Method bestMethod(Method[] methods, Class<?>[] argTypes) throws AmbiguousMethodMatchException {
          try {
              return best(methods, collectSignatures(methods), collectVarArgs(methods), argTypes);
          } catch (AmbiguousSignatureMatchException e) {
              throw new AmbiguousMethodMatchException(e, methods);
          }
      }
docs: Selects the best method for the given argument types.
  @param methods
  @param argTypes
  @return method
  @throws AmbiguousSignatureMatchException if multiple methods match equally