code: private void mapExecutable(ExecutableMemberDoc em) {
          Parameter[] params = em.parameters();
          boolean isConstructor = em.isConstructor();
          List<Type> classArgs = new ArrayList<Type>();
          for (int k = 0; k < params.length; k++) {
              Type pcd = params[k].type();
              // primitives don't get mapped, also avoid dups
              if ((! params[k].type().isPrimitive()) &&
                   ! classArgs.contains(pcd) &&
                   ! (pcd instanceof TypeVariable)) {
                  add(isConstructor? classToConstructorArgs :classToMethodArgs,
                          pcd.asClassDoc(), em);
                  classArgs.add(pcd);
                  mapTypeParameters(isConstructor?
                     classToConstructorDocArgTypeParam : classToExecMemberDocArgTypeParam,
                     pcd, em);
              }
              mapAnnotations(
                  isConstructor ?
                      classToConstructorParamAnnotation :
                      classToExecMemberDocParamAnnotation,
                  params[k], em);
          }
          ClassDoc[] thr = em.thrownExceptions();
          for (int k = 0; k < thr.length; k++) {
              add(isConstructor? classToConstructorThrows : classToMethodThrows,
                      thr[k], em);
          }
      }
docs: Determine classes used by a method or constructor, so they can be
  inverse mapped.