code: public static int bestMatch(Class<?>[][] signatures, boolean[] varArgs, Class<?>[] argTypes) throws AmbiguousSignatureMatchException {
          return bestMatch(signatures, varArgs, new JavaSignatureComparator(argTypes));
      }
docs: Selects the best match in signatures for the given argument types.
  @param signatures
  @param varArgs
  @param argTypes
  @return index of best signature, -1 if nothing matched
  @throws AmbiguousSignatureMatchException if two signatures matched equally