Buggy code:
public class EqualExpression extends BinaryExpression { public EqualExpression ( Expression left , Expression right , int operator ) { } private void checkNullComparison ( BlockScope scope , FlowContext flowContext , FlowInfo flowInfo , FlowInfo initsWhenTrue , FlowInfo initsWhenFalse ) { } private void checkVariableComparison ( BlockScope scope , FlowContext flowContext , FlowInfo flowInfo , FlowInfo initsWhenTrue , FlowInfo initsWhenFalse , LocalVariableBinding local , int nullStatus , Expression reference ) { switch ( nullStatus ) { case FlowInfo . NULL : if ( ( ( ( this . bits ) & ( ASTNode . OperatorMASK ) ) > > ( ASTNode . OperatorSHIFT ) ) == ( OperatorIds . EQUAL_EQUAL ) ) { flowContext . recordUsingNullReference ( scope , local , reference , ( ( FlowContext . CAN_ONLY_NULL_NON_NULL ) | ( FlowContext . IN_COMPARISON_NULL ) ) , flowInfo ) ; initsWhenTrue . markAsComparedEqualToNull ( local ) ; initsWhenFalse . markAsComparedEqualToNonNull ( local ) ; } else { flowContext . recordUsingNullReference ( scope , local , reference , ( ( FlowContext . CAN_ONLY_NULL_NON_NULL ) | ( FlowContext . IN_COMPARISON_NON_NULL ) ) , flowInfo ) ; initsWhenTrue . markAsComparedEqualToNonNull ( local ) ; initsWhenFalse . markAsComparedEqualToNull ( local ) ; } <START_BUG> if ( flowContext . hideNullComparisonWarnings ) { <END_BUG> flowInfo . markedAsNullOrNonNullInAssertExpression ( local ) ; } break ; case FlowInfo . NON_NULL : if ( ( ( ( this . bits ) & ( ASTNode . OperatorMASK ) ) > > ( ASTNode . OperatorSHIFT ) ) == ( OperatorIds . EQUAL_EQUAL ) ) { flowContext . recordUsingNullReference ( scope , local , reference , ( ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_COMPARISON_NON_NULL ) ) , flowInfo ) ; initsWhenTrue . markAsComparedEqualToNonNull ( local ) ; } else { flowContext . recordUsingNullReference ( scope , local , reference , ( ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_COMPARISON_NULL ) ) , flowInfo ) ; } break ; } } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public final void computeConstant ( TypeBinding leftType , TypeBinding rightType ) { } public void generateCode ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { } public void generateOptimizedBoolean ( BlockScope currentScope , CodeStream codeStream , BranchLabel trueLabel , BranchLabel falseLabel , boolean valueRequired ) { } public void generateBooleanEqual ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { } public void generateOptimizedBooleanEqual ( BlockScope currentScope , CodeStream codeStream , BranchLabel trueLabel , BranchLabel falseLabel , boolean valueRequired ) { } public void generateNonBooleanEqual ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { } public void generateOptimizedNonBooleanEqual ( BlockScope currentScope , CodeStream codeStream , BranchLabel trueLabel , BranchLabel falseLabel , boolean valueRequired ) { } public boolean isCompactableOperation ( ) { } public TypeBinding resolveType ( BlockScope scope ) { } public void traverse ( ASTVisitor visitor , BlockScope scope ) { } }

Fix:
if ( ( ( flowContext . tagBits ) & ( FlowContext . HIDE_NULL_COMPARISON_WARNING ) ) != 0 ) {