@Override
  protected final void processAnnotationOnMethod(
      MethodMetadata data, Annotation annotation, Method method) {
    List<GuardedAnnotationProcessor> processors =
        methodAnnotationProcessors.stream()
            .filter(processor -> processor.test(annotation))
            .collect(Collectors.toList());

    if (!processors.isEmpty()) {
      processors.forEach(processor -> processor.process(annotation, data));
    } else {
      data.addWarning(
          String.format(
              "Method %s has an annotation %s that is not used by contract %s",
              method.getName(),
              annotation.annotationType().getSimpleName(),
              getClass().getSimpleName()));
    }
  }
@param data metadata collected so far relating to the current java method.
@param annotation annotations present on the current method annotation.
@param method method currently being processed.
core/src/main/java/feign/DeclarativeContract.java