}
push(new Dup());
storeInstruction(); // dupe
switchCase.getExpression().accept(this);
storeInstruction(); // equal-equal
ConditionalJump condJump = new ConditionalJump(true);
push(condJump);
storeInstruction(); // conditional jump
if (currentslot.stmts != null) {
currentslot = new slot();
jumpsStatements.add(currentslot);
}
currentslot.jumps.add(condJump);
}
} else {
if (statementsDefault != null) {
statementsDefault.add(statement);
} else {
if (currentslot.stmts == null) {
currentslot.stmts = new ArrayList<Statement>();
}
currentslot.stmts.add(statement);
}
}
}
Jump jumpEnd = null;
if (jumpDefault == null) {
push(new Pop(0));
storeInstruction(); // pop
jumpEnd = new Jump();
push(jumpEnd);
storeInstruction(); // jump
}
for (Iterator<slot> iter = jumpsStatements.iterator(); iter.hasNext();) {
currentslot = iter.next();
for (Iterator<ConditionalJump> iterator = currentslot.jumps.iterator(); iterator.hasNext();) {
ConditionalJump condJump = iterator.next();
condJump.setOffset((fCounter - fInstructions.indexOf(condJump)) - 1);
}
if (currentslot.stmts != null) {
push(new Pop(0));
storeInstruction(); // pop
for (Iterator<Statement> iterator = currentslot.stmts.iterator(); iterator.hasNext();) {