body.append(fact.createReturn(returnType));
body.append(InstructionFactory.createReturn(returnType));
	private boolean mungeNewMethod(BcelClassWeaver weaver, NewMethodTypeMunger munger) {		ResolvedMember signature = munger.getSignature();		ResolvedMember dispatchMethod = munger.getDispatchMethod(aspectType);				LazyClassGen gen = weaver.getLazyClassGen();				ResolvedTypeX onType = weaver.getWorld().resolve(signature.getDeclaringType());		boolean onInterface = onType.isInterface();				if (onType.equals(gen.getType())) {			ResolvedMember introMethod = 					AjcMemberMaker.interMethod(signature, aspectType, onInterface);						LazyMethodGen mg = makeMethodGen(gen, introMethod);			if (!onInterface && !Modifier.isAbstract(introMethod.getModifiers())) {				InstructionList body = mg.getBody();				InstructionFactory fact = gen.getFactory();				int pos = 0;					if (!signature.isStatic()) {					body.append(fact.createThis());					pos++;				}				Type[] paramTypes = BcelWorld.makeBcelTypes(introMethod.getParameterTypes());				for (int i = 0, len = paramTypes.length; i < len; i++) {					Type paramType = paramTypes[i];					body.append(fact.createLoad(paramType, pos));					pos+=paramType.getSize();				}				body.append(Utility.createInvoke(fact, weaver.getWorld(), dispatchMethod));				body.append(fact.createReturn(BcelWorld.makeBcelType(introMethod.getReturnType())));			} else {				//??? this is okay				//if (!(mg.getBody() == null)) throw new RuntimeException("bas");			}						// XXX make sure to check that we set exceptions properly on this guy.			weaver.addLazyMethodGen(mg);						addNeededSuperCallMethods(weaver, onType, munger.getSuperMethodsCalled());			    		return true;		} else if (onInterface && gen.getType().isTopmostImplementor(onType) && 						!Modifier.isAbstract(signature.getModifiers()))		{			ResolvedMember introMethod = 					AjcMemberMaker.interMethod(signature, aspectType, false);						LazyMethodGen mg = makeMethodGen(gen, introMethod);						// 									Type[] paramTypes = BcelWorld.makeBcelTypes(introMethod.getParameterTypes());			Type returnType = BcelWorld.makeBcelType(introMethod.getReturnType());						InstructionList body = mg.getBody();			InstructionFactory fact = gen.getFactory();			int pos = 0;			if (!introMethod.isStatic()) {				body.append(fact.createThis());				pos++;			}			for (int i = 0, len = paramTypes.length; i < len; i++) {				Type paramType = paramTypes[i];				body.append(fact.createLoad(paramType, pos));				pos+=paramType.getSize();			}			body.append(Utility.createInvoke(fact, weaver.getWorld(), dispatchMethod));			body.append(fact.createReturn(returnType));			mg.definingType = onType;						weaver.addOrReplaceLazyMethodGen(mg);						addNeededSuperCallMethods(weaver, onType, munger.getSuperMethodsCalled());						return true;		} else {			return false;		}	}