public void annotate(MethodInvocationTree tree,AnnotatedExecutableType type){
  if (polyQuals.isEmpty())   return;
  if (TreeUtils.isEnumSuper(tree))   return;
  List<AnnotatedTypeMirror> requiredArgs=AnnotatedTypes.expandVarArgs(atypeFactory,type,tree.getArguments());
  List<AnnotatedTypeMirror> arguments=AnnotatedTypes.getAnnotatedTypes(atypeFactory,requiredArgs,tree.getArguments());
  Map<AnnotationMirror,Set<? extends AnnotationMirror>> matchingMapping=collector.visit(arguments,requiredArgs);
  if (type.getReceiverType() != null && !TreeUtils.isSuperCall(tree) && !TreeUtils.isThisCall(tree)) {
    matchingMapping=collector.reduce(matchingMapping,collector.visit(atypeFactory.getReceiverType(tree),type.getReceiverType()));
  }
  if (matchingMapping != null && !matchingMapping.isEmpty()) {
    replacer.visit(type,matchingMapping);
  }
 else {
    completer.visit(type);
  }
}

public void annotate ( MethodInvocationTree tree , AnnotatedExecutableType type ) { if ( polyQuals . isEmpty ( ) ) return ; if ( TreeUtils . isEnumSuper ( tree ) ) return ; List < AnnotatedTypeMirror > requiredArgs = AnnotatedTypes . expandVarArgs ( atypeFactory , type , tree . getArguments ( ) ) ; List < AnnotatedTypeMirror > arguments = AnnotatedTypes . getAnnotatedTypes ( atypeFactory , requiredArgs , tree . getArguments ( ) ) ; Map < AnnotationMirror , Set < ? extends AnnotationMirror > > matchingMapping = collector . visit ( arguments , requiredArgs ) ; if ( type . getReceiverType ( ) != null && ! TreeUtils . isSuperCall ( tree ) && ! TreeUtils . isThisCall ( tree ) ) { matchingMapping = collector . reduce ( matchingMapping , collector . visit ( atypeFactory . getReceiverType ( tree ) , type . getReceiverType ( ) ) ) ; } if ( matchingMapping != null && ! matchingMapping . isEmpty ( ) ) { replacer . visit ( type , matchingMapping ) ; } else { completer . visit ( type ) ; } }
resolves polymorphism annotations for the given type .
