BcelAdvice munger)
BcelAdvice munger, LazyMethodGen localAdviceMethod, List argVarList)
	private InstructionList getRedoneProceedCall(		InstructionFactory fact,		LazyMethodGen callbackMethod,		BcelAdvice munger) 	{		InstructionList ret = new InstructionList();		// we have on stack all the arguments for the ADVICE call.		// we have in frame somewhere all the arguments for the non-advice call.				List argVarList = new ArrayList();				// start w/ stuff		if (thisVar != null) {			argVarList.add(thisVar);		}		        if (targetVar != null && targetVar != thisVar) {            argVarList.add(targetVar);        }		for (int i = 0, len = getArgCount(); i < len; i++) {			argVarList.add(argVars[i]);		}		if (thisJoinPointVar != null) {			argVarList.add(thisJoinPointVar);		}				BcelVar[] adviceVars = munger.getExposedStateAsBcelVars();				//??? this is too easy//		for (int i=0; i < adviceVars.length; i++) {//			if (adviceVars[i] != null) //				adviceVars[i].setPositionInAroundState(i);//		}		IntMap proceedMap =  makeProceedArgumentMap(adviceVars);//		System.out.println(proceedMap + " for " + this);//		System.out.println(argVarList);				ResolvedTypeX[] proceedParamTypes = world.resolve(munger.getSignature().getParameterTypes());		// remove this*JoinPoint* as arguments to proceed		if (munger.getBaseParameterCount()+1 < proceedParamTypes.length) {			int len = munger.getBaseParameterCount()+1;			ResolvedTypeX[] newTypes = new ResolvedTypeX[len];			System.arraycopy(proceedParamTypes, 0, newTypes, 0, len);			proceedParamTypes = newTypes;		}				//System.out.println("stateTypes: " + Arrays.asList(stateTypes));		BcelVar[] proceedVars = 			Utility.pushAndReturnArrayOfVars(proceedParamTypes, ret, fact, enclosingMethod);				Type[] stateTypes = callbackMethod.getArgumentTypes();//		System.out.println("stateTypes: " + Arrays.asList(stateTypes));				for (int i=0, len=stateTypes.length; i < len; i++) {            Type stateType = stateTypes[i];            ResolvedTypeX stateTypeX = BcelWorld.fromBcel(stateType).resolve(world);            if (proceedMap.hasKey(i)) {            	//throw new RuntimeException("unimplemented");				proceedVars[proceedMap.get(i)].appendLoadAndConvert(ret, fact, stateTypeX);            } else {				((BcelVar) argVarList.get(i)).appendLoad(ret, fact);            }		}						ret.append(Utility.createInvoke(fact, callbackMethod));		ret.append(Utility.createConversion(fact, callbackMethod.getReturnType(), 				BcelWorld.makeBcelType(munger.getSignature().getReturnType())));		return ret;	}   