code: public static Method bestMethod(Method[] methods, Object[] args) throws AmbiguousMethodMatchException {
          return bestMethod(methods, collectArgTypes(args));
      }
docs: Selects the best method for the given arguments.
  @param methods
  @param args
  @return method
  @throws AmbiguousSignatureMatchException if multiple methods match equally