Buggy code:
public class ConditionalExpression extends OperatorExpression { public Expression condition ; public Expression valueIfTrue ; public Expression valueIfFalse ; public Constant optimizedBooleanConstant ; public Constant optimizedIfTrueConstant ; public Constant optimizedIfFalseConstant ; int trueInitStateIndex = - 1 ; int falseInitStateIndex = - 1 ; int mergedInitStateIndex = - 1 ; public ConditionalExpression ( Expression condition , Expression valueIfTrue , Expression valueIfFalse ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public void generateCode ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { int pc = codeStream . position ; BranchLabel endifLabel ; BranchLabel falseLabel ; if ( ( constant ) != ( Constant . NotAConstant ) ) { if ( valueRequired ) codeStream . generateConstant ( constant , implicitConversion ) ; codeStream . recordPositionsFrom ( pc , this . sourceStart ) ; return ; } Constant cst = condition . constant ; Constant condCst = condition . optimizedBooleanConstant ( ) ; boolean needTruePart = ! ( ( ( cst != ( Constant . NotAConstant ) ) && ( ( cst . booleanValue ( ) ) == false ) ) || ( ( condCst != ( Constant . NotAConstant ) ) && ( ( condCst . booleanValue ( ) ) == false ) ) ) ; boolean needFalsePart = ! ( ( ( cst != ( Constant . NotAConstant ) ) && ( ( cst . booleanValue ( ) ) == true ) ) || ( ( condCst != ( Constant . NotAConstant ) ) && ( ( condCst . booleanValue ( ) ) == true ) ) ) ; endifLabel = new BranchLabel ( codeStream ) ; boolean needConditionValue = ( cst == ( Constant . NotAConstant ) ) && ( condCst == ( Constant . NotAConstant ) ) ; falseLabel = new BranchLabel ( codeStream ) ; falseLabel . tagBits |= BranchLabel . USED ; condition . generateOptimizedBoolean ( currentScope , codeStream , null , falseLabel , needConditionValue ) ; if ( ( trueInitStateIndex ) != ( - 1 ) ) { codeStream . removeNotDefinitelyAssignedVariables ( currentScope , trueInitStateIndex ) ; codeStream . addDefinitelyAssignedVariables ( currentScope , trueInitStateIndex ) ; } if ( needTruePart ) { valueIfTrue . generateCode ( currentScope , codeStream , valueRequired ) ; if ( needFalsePart ) { int position = codeStream . position ; codeStream . goto_ ( endifLabel ) ; codeStream . updateLastRecordedEndPC ( currentScope , position ) ; if ( valueRequired ) { codeStream . decrStackSize ( ( ( ( this . resolvedType ) == ( TypeBinding . LONG ) ) || ( ( this . resolvedType ) == ( TypeBinding . DOUBLE ) ) ? 2 : 1 ) ) ; } } } if ( needFalsePart ) { if ( ( falseInitStateIndex ) != ( - 1 ) ) { codeStream . removeNotDefinitelyAssignedVariables ( currentScope , falseInitStateIndex ) ; codeStream . addDefinitelyAssignedVariables ( currentScope , falseInitStateIndex ) ; } <START_BUG> if ( ( falseLabel . forwardReferenceCount ) > 0 ) { <END_BUG> falseLabel . place ( ) ; } valueIfFalse . generateCode ( currentScope , codeStream , valueRequired ) ; if ( valueRequired ) { codeStream . recordExpressionType ( this . resolvedType ) ; } if ( needTruePart ) { endifLabel . place ( ) ; } } if ( ( mergedInitStateIndex ) != ( - 1 ) ) { codeStream . removeNotDefinitelyAssignedVariables ( currentScope , mergedInitStateIndex ) ; } if ( valueRequired ) codeStream . generateImplicitConversion ( implicitConversion ) ; codeStream . recordPositionsFrom ( pc , this . sourceStart ) ; } public void generateOptimizedBoolean ( BlockScope currentScope , CodeStream codeStream , BranchLabel trueLabel , BranchLabel falseLabel , boolean valueRequired ) { } public int nullStatus ( FlowInfo flowInfo ) { } public Constant optimizedBooleanConstant ( ) { } public StringBuffer printExpressionNoParenthesis ( int indent , StringBuffer output ) { } public TypeBinding resolveType ( BlockScope scope ) { } public void traverse ( ASTVisitor visitor , BlockScope scope ) { } }

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