code: public static <T> T[] candidates(T[] items, Class<?>[][] signatures, boolean[] varArgs, Class<?>[] argTypes) {
          final int[] indices = candidateMatches(signatures, varArgs, argTypes);
          T[] result = newArray(items.getClass().getComponentType(), indices.length);
          for (int i = 0; i < indices.length; i++) {
              result[i] = items[indices[i]];
          }
          return result;
      }
docs: Selects the best equally-matching item for the given argument types.
  @param <T>
  @param items
  @param signatures
  @param varArgs
  @param argTypes
  @return item