Buggy code:
public class UnaryExpression extends OperatorExpression { public Expression expression ; public Constant optimizedBooleanConstant ; public UnaryExpression ( Expression expression , int operator ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public Constant optimizedBooleanConstant ( ) { } public void generateCode ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { int pc = codeStream . position ; BranchLabel falseLabel ; BranchLabel endifLabel ; if ( ( this . constant ) != ( Constant . NotAConstant ) ) { if ( valueRequired ) { codeStream . generateConstant ( this . constant , this . implicitConversion ) ; } codeStream . recordPositionsFrom ( pc , this . sourceStart ) ; return ; } switch ( ( ( bits ) & ( ASTNode . OperatorMASK ) ) > > ( ASTNode . OperatorSHIFT ) ) { case OperatorIds . NOT : switch ( ( ( this . expression . implicitConversion ) & ( TypeIds . IMPLICIT_CONVERSION_MASK ) ) > > 4 ) { case TypeIds . T_boolean : this . expression . generateOptimizedBoolean ( currentScope , codeStream , null , ( falseLabel = new BranchLabel ( codeStream ) ) , valueRequired ) ; if ( valueRequired ) { codeStream . iconst_0 ( ) ; <START_BUG> if ( falseLabel . hasForwardReferences ( ) ) { <END_BUG> codeStream . goto_ ( ( endifLabel = new BranchLabel ( codeStream ) ) ) ; codeStream . decrStackSize ( 1 ) ; falseLabel . place ( ) ; codeStream . iconst_1 ( ) ; endifLabel . place ( ) ; } } else { falseLabel . place ( ) ; } break ; } break ; case OperatorIds . TWIDDLE : switch ( ( ( this . expression . implicitConversion ) & ( TypeIds . IMPLICIT_CONVERSION_MASK ) ) > > 4 ) { case TypeIds . T_int : this . expression . generateCode ( currentScope , codeStream , valueRequired ) ; if ( valueRequired ) { codeStream . iconst_m1 ( ) ; codeStream . ixor ( ) ; } break ; case TypeIds . T_long : this . expression . generateCode ( currentScope , codeStream , valueRequired ) ; if ( valueRequired ) { codeStream . ldc2_w ( ( - 1L ) ) ; codeStream . lxor ( ) ; } } break ; case OperatorIds . MINUS : if ( ( this . constant ) != ( Constant . NotAConstant ) ) { if ( valueRequired ) { switch ( ( ( this . expression . implicitConversion ) & ( TypeIds . IMPLICIT_CONVERSION_MASK ) ) > > 4 ) { case TypeIds . T_int : codeStream . generateInlinedValue ( ( ( this . constant . intValue ( ) ) * ( - 1 ) ) ) ; break ; case TypeIds . T_float : codeStream . generateInlinedValue ( ( ( this . constant . floatValue ( ) ) * ( - 1.0F ) ) ) ; break ; case TypeIds . T_long : codeStream . generateInlinedValue ( ( ( this . constant . longValue ( ) ) * ( - 1L ) ) ) ; break ; case TypeIds . T_double : codeStream . generateInlinedValue ( ( ( this . constant . doubleValue ( ) ) * ( - 1.0 ) ) ) ; } } } else { this . expression . generateCode ( currentScope , codeStream , valueRequired ) ; if ( valueRequired ) { switch ( ( ( expression . implicitConversion ) & ( TypeIds . IMPLICIT_CONVERSION_MASK ) ) > > 4 ) { case TypeIds . T_int : codeStream . ineg ( ) ; break ; case TypeIds . T_float : codeStream . fneg ( ) ; break ; case TypeIds . T_long : codeStream . lneg ( ) ; break ; case TypeIds . T_double : codeStream . dneg ( ) ; } } } break ; case OperatorIds . PLUS : this . expression . generateCode ( currentScope , codeStream , valueRequired ) ; } if ( valueRequired ) { codeStream . generateImplicitConversion ( this . implicitConversion ) ; } codeStream . recordPositionsFrom ( pc , this . sourceStart ) ; } public void generateOptimizedBoolean ( BlockScope currentScope , CodeStream codeStream , BranchLabel trueLabel , BranchLabel falseLabel , boolean valueRequired ) { } public StringBuffer printExpressionNoParenthesis ( int indent , StringBuffer output ) { } public TypeBinding resolveType ( BlockScope scope ) { } public void traverse ( ASTVisitor visitor , BlockScope blockScope ) { } }

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