protected <E extends Annotation> void registerMethodAnnotation(
      Predicate<E> predicate, DeclarativeContract.AnnotationProcessor<E> processor) {
    this.methodAnnotationProcessors.add(new GuardedAnnotationProcessor(predicate, processor));
  }
Called while method annotations are being processed

@param predicate to check if the annotation should be processed or not
@param processor function that defines the annotations modifies {@link MethodMetadata}
core/src/main/java/feign/DeclarativeContract.java