@Override
  protected final boolean processAnnotationsOnParameter(
      MethodMetadata data, Annotation[] annotations, int paramIndex) {
    List<Annotation> matchingAnnotations =
        Arrays.stream(annotations)
            .filter(
                annotation ->
                    parameterAnnotationProcessors.containsKey(annotation.annotationType()))
            .collect(Collectors.toList());

    if (!matchingAnnotations.isEmpty()) {
      matchingAnnotations.forEach(
          annotation ->
              parameterAnnotationProcessors
                  .getOrDefault(
                      annotation.annotationType(), ParameterAnnotationProcessor.DO_NOTHING)
                  .process(annotation, data, paramIndex));

    } else {
      final Parameter parameter = data.method().getParameters()[paramIndex];
      String parameterName =
          parameter.isNamePresent() ? parameter.getName() : parameter.getType().getSimpleName();
      if (annotations.length == 0) {
        data.addWarning(
            String.format(
                "Parameter %s has no annotations, it may affect contract %s",
                parameterName, getClass().getSimpleName()));
      } else {
        data.addWarning(
            String.format(
                "Parameter %s has annotations %s that are not used by contract %s",
                parameterName,
                Arrays.stream(annotations)
                    .map(annotation -> annotation.annotationType().getSimpleName())
                    .collect(Collectors.toList()),
                getClass().getSimpleName()));
      }
    }
    return false;
  }
@param data metadata collected so far relating to the current java method.
@param annotations annotations present on the current parameter annotation.
@param paramIndex if you find a name in {@code annotations}, call {@link
    #nameParam(MethodMetadata, String, int)} with this as the last parameter.
@return true if you called {@link #nameParam(MethodMetadata, String, int)} after finding an
    http-relevant annotation.
core/src/main/java/feign/DeclarativeContract.java