os.writePOP(helper.AAX); os.writePOP(helper.ABX); os.writePOP(helper.ACX); os.writePOP(helper.ADX); os.writePUSH(helper.ABX); os.writePUSH(helper.AAX); os.writePUSH(helper.ADX); os.writePUSH(helper.ACX); os.writePUSH(helper.ABX); os.writePUSH(helper.AAX);
if (c1 == 2) {
	public final void visit_dup2_x2() { 		if(countBytecode) { counters.getCounter("dup2_x2").inc(); }				// Push all on the stack, since this opcode is just too complicated		vstack.push(eContext);		System.out.println("####### dup2_x2");		final Item v1 = vstack.pop1();		final Item v2 = vstack.pop1();		final int c1 = v1.getCategory();		final int c2 = v2.getCategory();		// Perform a stack swap independent of the actual form		os.writePOP(helper.AAX); // Value1		os.writePOP(helper.ABX); // Value2		os.writePOP(helper.ACX); // Value3		os.writePOP(helper.ADX); // Value4		os.writePUSH(helper.ABX); // Value2		os.writePUSH(helper.AAX); // Value1		os.writePUSH(helper.ADX); // Value4		os.writePUSH(helper.ACX); // Value3		os.writePUSH(helper.ABX); // Value2		os.writePUSH(helper.AAX); // Value1		// Now update the operandstack		// cope with brain-dead definition from Sun (look-like somebody there		// was to eager to optimize this and it landed in the compiler...		if (c2 == 2) {			// form 4			assertCondition(c1 == 2, "category mismatch");			vstack.push1(ifac.createStack(v1.getType()));			vstack.push1(v2);			vstack.push1(v1);		} else {			final Item v3 = vstack.pop1();			int c3 = v3.getCategory();			if (c1 == 2) {				// form 2				assertCondition(c3 == 1, "category mismatch");				vstack.push1(ifac.createStack(v1.getType()));				vstack.push1(v3);				vstack.push1(v2);				vstack.push1(v1);			} else if (c3 == 2) {				// form 3				vstack.push1(ifac.createStack(v2.getType()));				vstack.push1(ifac.createStack(v1.getType()));				vstack.push1(v3);				vstack.push1(v2);				vstack.push1(v1);			} else {				// form 1				final Item v4 = vstack.pop1();				vstack.push1(ifac.createStack(v2.getType()));				vstack.push1(ifac.createStack(v1.getType()));				vstack.push1(v4);				vstack.push1(v3);				vstack.push1(v2);				vstack.push1(v1);			}		}	}