il.append(fact.DUP);
il.append(InstructionConstants.DUP);
    private InstructionList makeClosureInstantiation(Member constructor, BcelVar holder) {    //    LazyMethodGen constructor) {    	InstructionFactory fact = getFactory();        BcelVar arrayVar = genTempVar(TypeX.OBJECTARRAY);        //final Type objectArrayType = new ArrayType(Type.OBJECT, 1);        final InstructionList il = new InstructionList();        int alen = getArgCount() + (thisVar == null ? 0 : 1) +         			((targetVar != null && targetVar != thisVar) ? 1 : 0) +         			(thisJoinPointVar == null ? 0 : 1);        il.append(Utility.createConstant(fact, alen));        il.append((Instruction)fact.createNewArray(Type.OBJECT, (short)1));        arrayVar.appendStore(il, fact);        int stateIndex = 0;             if (thisVar != null) {            arrayVar.appendConvertableArrayStore(il, fact, stateIndex, thisVar);			thisVar.setPositionInAroundState(stateIndex);            stateIndex++;        }       	        if (targetVar != null && targetVar != thisVar) {            arrayVar.appendConvertableArrayStore(il, fact, stateIndex, targetVar);			targetVar.setPositionInAroundState(stateIndex);            stateIndex++;        }               for (int i = 0, len = getArgCount(); i<len; i++) {            arrayVar.appendConvertableArrayStore(il, fact, stateIndex, argVars[i]);            argVars[i].setPositionInAroundState(stateIndex);            stateIndex++;        }        if (thisJoinPointVar != null) {        	arrayVar.appendConvertableArrayStore(il, fact, stateIndex, thisJoinPointVar);        	thisJoinPointVar.setPositionInAroundState(stateIndex);        	stateIndex++;        }        il.append(fact.createNew(new ObjectType(constructor.getDeclaringType().getName())));        il.append(new DUP());        arrayVar.appendLoad(il, fact);        il.append(Utility.createInvoke(fact, world, constructor));        if (getKind() == PreInitialization) {			il.append(fact.DUP);			holder.appendStore(il, fact);        }        return il;    }