public void createBCode(CodeGeneration gen) { super.createBCode(gen); int elseBranch = else_branch_label(); int thenBranch = then_branch_label(); int endBranch = hostType().constantPool().newLabel(); getCondition().emitEvalBranch(gen); gen.addLabel(thenBranch); // if(getCondition().canBeTrue()) { getThen().createBCode(gen); if (getThen().canCompleteNormally() && hasElse() /*&& getCondition().canBeFalse()*/) gen.emitGoto(endBranch); // } gen.addLabel(elseBranch); if (hasElse() /*&& getCondition().canBeFalse()*/) getElse().createBCode(gen); gen.addLabel(endBranch); }