private boolean buildParameterDefiners ( ) throws ClassNotFoundException { Method m = getMethod ( ) ; Type [ ] parms = m . getArgumentTypes ( ) ; if ( parms . length == 0 ) { return false ; } ParameterAnnotationEntry [ ] annotations = m . getParameterAnnotationEntries ( ) ; boolean hasPossiblyOverlyConcreteParm = false ; for ( int i = 0 ; i < parms . length ; i ++ ) { if ( ( annotations . length <= i ) || ( annotations [ i ] == null ) || ( annotations [ i ] . getAnnotationEntries ( ) . length == 0 ) ) { String parm = parms [ i ] . getSignature ( ) ; if ( parm . startsWith ( Values . SIG_QUALIFIED_CLASS_PREFIX ) ) { String clsName = SignatureUtils . stripSignature ( parm ) ; if ( clsName . startsWith ( "java.lang." ) ) { continue ; } JavaClass clz = Repository . lookupClass ( clsName ) ; if ( ( clz . isClass ( ) && ( ! clz . isAbstract ( ) ) && ( ! cls . isEnum ( ) ) ) || OVERLY_CONCRETE_INTERFACES . contains ( clsName ) ) { Map < JavaClass , List < MethodInfo > > definers = getClassDefiners ( clz ) ; if ( ! definers . isEmpty ( ) ) { parameterDefiners . put ( Integer . valueOf ( i + ( methodIsStatic ? 0 : 1 ) ) , definers ) ; hasPossiblyOverlyConcreteParm = true ; } } } } } return hasPossiblyOverlyConcreteParm ; }
builds a map of method information for each method of each interface that each parameter implements of this method