Buggy code:
public class OR_OR_Expression extends BinaryExpression { int rightInitStateIndex = - 1 ; int mergedInitStateIndex = - 1 ; public OR_OR_Expression ( Expression left , Expression right , int operator ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public void generateCode ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { int pc = codeStream . position ; if ( ( constant ) != ( Constant . NotAConstant ) ) { if ( valueRequired ) codeStream . generateConstant ( constant , implicitConversion ) ; codeStream . recordPositionsFrom ( pc , this . sourceStart ) ; return ; } Constant cst = right . constant ; if ( cst != ( Constant . NotAConstant ) ) { if ( ( cst . booleanValue ( ) ) == true ) { this . left . generateCode ( currentScope , codeStream , false ) ; if ( valueRequired ) codeStream . iconst_1 ( ) ; } else { this . left . generateCode ( currentScope , codeStream , valueRequired ) ; } if ( ( mergedInitStateIndex ) != ( - 1 ) ) { codeStream . removeNotDefinitelyAssignedVariables ( currentScope , mergedInitStateIndex ) ; } codeStream . generateImplicitConversion ( implicitConversion ) ; codeStream . updateLastRecordedEndPC ( currentScope , codeStream . position ) ; codeStream . recordPositionsFrom ( pc , this . sourceStart ) ; return ; } BranchLabel trueLabel = new BranchLabel ( codeStream ) ; BranchLabel endLabel ; cst = left . optimizedBooleanConstant ( ) ; boolean leftIsConst = cst != ( Constant . NotAConstant ) ; boolean leftIsTrue = leftIsConst && ( ( cst . booleanValue ( ) ) == true ) ; cst = right . optimizedBooleanConstant ( ) ; boolean rightIsConst = cst != ( Constant . NotAConstant ) ; boolean rightIsTrue = rightIsConst && ( ( cst . booleanValue ( ) ) == true ) ; generateOperands : { if ( leftIsConst ) { left . generateCode ( currentScope , codeStream , false ) ; if ( leftIsTrue ) { break generateOperands ; } } else { left . generateOptimizedBoolean ( currentScope , codeStream , trueLabel , null , true ) ; } if ( ( rightInitStateIndex ) != ( - 1 ) ) { codeStream . addDefinitelyAssignedVariables ( currentScope , rightInitStateIndex ) ; } if ( rightIsConst ) { right . generateCode ( currentScope , codeStream , false ) ; } else { right . generateOptimizedBoolean ( currentScope , codeStream , trueLabel , null , valueRequired ) ; } } if ( ( mergedInitStateIndex ) != ( - 1 ) ) { codeStream . removeNotDefinitelyAssignedVariables ( currentScope , mergedInitStateIndex ) ; } if ( valueRequired ) { if ( leftIsConst && leftIsTrue ) { codeStream . iconst_1 ( ) ; codeStream . updateLastRecordedEndPC ( currentScope , codeStream . position ) ; } else { if ( rightIsConst && rightIsTrue ) { codeStream . iconst_1 ( ) ; codeStream . updateLastRecordedEndPC ( currentScope , codeStream . position ) ; } else { codeStream . iconst_0 ( ) ; } <START_BUG> if ( trueLabel . hasForwardReferences ( ) ) { <END_BUG> if ( ( ( bits ) & ( ASTNode . IsReturnedValue ) ) != 0 ) { codeStream . generateImplicitConversion ( this . implicitConversion ) ; codeStream . generateReturnBytecode ( this ) ; trueLabel . place ( ) ; codeStream . iconst_1 ( ) ; } else { codeStream . goto_ ( ( endLabel = new BranchLabel ( codeStream ) ) ) ; codeStream . decrStackSize ( 1 ) ; trueLabel . place ( ) ; codeStream . iconst_1 ( ) ; endLabel . place ( ) ; } } else { trueLabel . place ( ) ; } } codeStream . generateImplicitConversion ( implicitConversion ) ; codeStream . updateLastRecordedEndPC ( currentScope , codeStream . position ) ; } else { trueLabel . place ( ) ; } } public void generateOptimizedBoolean ( BlockScope currentScope , CodeStream codeStream , BranchLabel trueLabel , BranchLabel falseLabel , boolean valueRequired ) { } public boolean isCompactableOperation ( ) { } public void traverse ( ASTVisitor visitor , BlockScope scope ) { } }

Fix:
if ( ( trueLabel . forwardReferenceCount ) > 0 ) {