body.append(fact.ALOAD_0);
body.append(InstructionConstants.ALOAD_0);
	private boolean mungeNewConstructor(		BcelClassWeaver weaver,		NewConstructorTypeMunger newConstructorTypeMunger) 	{		final LazyClassGen currentClass = weaver.getLazyClassGen();		final InstructionFactory fact = currentClass.getFactory();		ResolvedMember newConstructorMember = newConstructorTypeMunger.getSyntheticConstructor();		TypeX          onType = newConstructorMember.getDeclaringType();						if (! onType.equals(currentClass.getType())) return false;		ResolvedMember explicitConstructor = newConstructorTypeMunger.getExplicitConstructor();		//int declaredParameterCount = newConstructorTypeMunger.getDeclaredParameterCount();		LazyMethodGen freshConstructor = 			makeMethodGen(currentClass, newConstructorMember);		currentClass.addMethodGen(freshConstructor);		//weaver.addLazyMethodGen(freshConstructor);				InstructionList body = freshConstructor.getBody();				// add to body:  push arts for call to pre, from actual args starting at 1 (skipping this), going to 		//               declared argcount + 1		TypeX[] declaredParams = newConstructorTypeMunger.getSignature().getParameterTypes();		Type[] paramTypes = freshConstructor.getArgumentTypes();		int frameIndex = 1;		for (int i = 0, len = declaredParams.length; i < len; i++) {			body.append(fact.createLoad(paramTypes[i], frameIndex));			frameIndex += paramTypes[i].getSize();		}		// do call to pre		Member preMethod = AjcMemberMaker.preIntroducedConstructor(aspectType, onType, declaredParams);		body.append(Utility.createInvoke(fact, null, preMethod));				// create a local, and store return pre stuff into it.		int arraySlot = freshConstructor.allocateLocal(1);		body.append(fact.createStore(Type.OBJECT, arraySlot));				// put this on the stack		body.append(fact.ALOAD_0);				// unpack pre args onto stack		TypeX[] superParamTypes = explicitConstructor.getParameterTypes();				for (int i = 0, len = superParamTypes.length; i < len; i++) {			body.append(fact.createLoad(Type.OBJECT, arraySlot));			body.append(Utility.createConstant(fact, i));			body.append(fact.createArrayLoad(Type.OBJECT));			body.append(Utility.createConversion(fact, Type.OBJECT, BcelWorld.makeBcelType(superParamTypes[i])));		}		// call super/this				body.append(Utility.createInvoke(fact, null, explicitConstructor));				// put this back on the stack		body.append(fact.ALOAD_0);				// unpack params onto stack		Member postMethod = AjcMemberMaker.postIntroducedConstructor(aspectType, onType, declaredParams);		TypeX[] postParamTypes = postMethod.getParameterTypes();				for (int i = 1, len = postParamTypes.length; i < len; i++) {			body.append(fact.createLoad(Type.OBJECT, arraySlot));			body.append(Utility.createConstant(fact, superParamTypes.length + i-1));			body.append(fact.createArrayLoad(Type.OBJECT));			body.append(Utility.createConversion(fact, Type.OBJECT, BcelWorld.makeBcelType(postParamTypes[i])));		}						// call post		body.append(Utility.createInvoke(fact, null, postMethod));				// don't forget to return!!				body.append(fact.RETURN);				return true;			}