final Item v1 = vstack.pop(); v1.loadIf(eContext, Item.Kind.STACK | Item.Kind.FPUSTACK); if (v1.getCategory() == 1) {  final Item v2 = vstack.pop(); v2.loadIf(eContext, Item.Kind.STACK | Item.Kind.FPUSTACK); assertCondition(v2.getCategory() == 1, "category mismatch"); vstack.push(v2.clone(eContext)); vstack.push(v1); vstack.push(v2.clone(eContext)); vstack.push(v1); } else { vstack.push(v1.clone(eContext)); vstack.push(v1); } }
final Item v1 = vstack.pop(); v1.loadIf(eContext, Item.Kind.STACK | Item.Kind.FPUSTACK); if (v1.getCategory() == 1) {  final Item v2 = vstack.pop(); v2.loadIf(eContext, Item.Kind.STACK | Item.Kind.FPUSTACK); assertCondition(v2.getCategory() == 1, "category mismatch"); vstack.push(v2.clone(eContext)); vstack.push(v1.clone(eContext)); vstack.push(v2); vstack.push(v1); } else { vstack.push(v1.clone(eContext)); vstack.push(v1); } }
    public final void visit_dup2() {        final Item v1 = vstack.pop();        v1.loadIf(eContext, Item.Kind.STACK | Item.Kind.FPUSTACK);        if (v1.getCategory() == 1) {            // form1            final Item v2 = vstack.pop();            v2.loadIf(eContext, Item.Kind.STACK | Item.Kind.FPUSTACK);            assertCondition(v2.getCategory() == 1, "category mismatch");            vstack.push(v2.clone(eContext));            vstack.push(v1);            vstack.push(v2.clone(eContext));            vstack.push(v1);        } else {            vstack.push(v1.clone(eContext));            vstack.push(v1);        }    }