code: 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;
      }
docs: builds a map of method information for each method of each interface that
  each parameter implements of this method
  
  @return a map by parameter id of all the method signatures that interfaces of
  that parameter implements
  
  @throws ClassNotFoundException if the class can't be loaded