Buggy code:
public class FinallyFlowContext extends FlowContext { Reference [ ] finalAssignments ; VariableBinding [ ] finalVariables ; int assignCount ; LocalVariableBinding [ ] nullLocals ; Expression [ ] nullReferences ; int [ ] nullCheckTypes ; int nullCount ; public FinallyFlowContext ( FlowContext parent , ASTNode associatedNode ) { } public void complainOnDeferredChecks ( FlowInfo flowInfo , BlockScope scope ) { } public String individualToString ( ) { } public boolean isSubRoutine ( ) { } protected boolean recordFinalAssignment ( VariableBinding binding , Reference finalAssignment ) { } public void recordUsingNullReference ( Scope scope , LocalVariableBinding local , Expression reference , int checkType , FlowInfo flowInfo ) { <START_BUG> if ( ( ( flowInfo . tagBits ) & ( FlowInfo . UNREACHABLE ) ) == 0 ) { <END_BUG> if ( deferNullDiagnostic ) { switch ( checkType ) { case ( FlowContext . CAN_ONLY_NULL_NON_NULL ) | ( FlowContext . IN_COMPARISON_NULL ) : case ( FlowContext . CAN_ONLY_NULL_NON_NULL ) | ( FlowContext . IN_COMPARISON_NON_NULL ) : case ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_COMPARISON_NULL ) : case ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_COMPARISON_NON_NULL ) : case ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_ASSIGNMENT ) : case ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_INSTANCEOF ) : if ( flowInfo . cannotBeNull ( local ) ) { if ( checkType == ( ( FlowContext . CAN_ONLY_NULL_NON_NULL ) | ( FlowContext . IN_COMPARISON_NON_NULL ) ) ) { scope . problemReporter ( ) . localVariableRedundantCheckOnNonNull ( local , reference ) ; } else { scope . problemReporter ( ) . localVariableNonNullComparedToNull ( local , reference ) ; } return ; } if ( flowInfo . canOnlyBeNull ( local ) ) { switch ( checkType & ( FlowContext . CONTEXT_MASK ) ) { case FlowContext . IN_COMPARISON_NULL : scope . problemReporter ( ) . localVariableRedundantCheckOnNull ( local , reference ) ; return ; case FlowContext . IN_COMPARISON_NON_NULL : scope . problemReporter ( ) . localVariableNullComparedToNonNull ( local , reference ) ; return ; case FlowContext . IN_ASSIGNMENT : scope . problemReporter ( ) . localVariableRedundantNullAssignment ( local , reference ) ; return ; case FlowContext . IN_INSTANCEOF : scope . problemReporter ( ) . localVariableNullInstanceof ( local , reference ) ; return ; } } break ; case FlowContext . MAY_NULL : if ( flowInfo . cannotBeNull ( local ) ) { return ; } if ( flowInfo . canOnlyBeNull ( local ) ) { scope . problemReporter ( ) . localVariableNullReference ( local , reference ) ; return ; } break ; default : } } else { switch ( checkType ) { case ( FlowContext . CAN_ONLY_NULL_NON_NULL ) | ( FlowContext . IN_COMPARISON_NULL ) : case ( FlowContext . CAN_ONLY_NULL_NON_NULL ) | ( FlowContext . IN_COMPARISON_NON_NULL ) : if ( flowInfo . isDefinitelyNonNull ( local ) ) { if ( checkType == ( ( FlowContext . CAN_ONLY_NULL_NON_NULL ) | ( FlowContext . IN_COMPARISON_NON_NULL ) ) ) { scope . problemReporter ( ) . localVariableRedundantCheckOnNonNull ( local , reference ) ; } else { scope . problemReporter ( ) . localVariableNonNullComparedToNull ( local , reference ) ; } return ; } case ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_COMPARISON_NULL ) : case ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_COMPARISON_NON_NULL ) : case ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_ASSIGNMENT ) : case ( FlowContext . CAN_ONLY_NULL ) | ( FlowContext . IN_INSTANCEOF ) : if ( flowInfo . isDefinitelyNull ( local ) ) { switch ( checkType & ( FlowContext . CONTEXT_MASK ) ) { case FlowContext . IN_COMPARISON_NULL : scope . problemReporter ( ) . localVariableRedundantCheckOnNull ( local , reference ) ; return ; case FlowContext . IN_COMPARISON_NON_NULL : scope . problemReporter ( ) . localVariableNullComparedToNonNull ( local , reference ) ; return ; case FlowContext . IN_ASSIGNMENT : scope . problemReporter ( ) . localVariableRedundantNullAssignment ( local , reference ) ; return ; case FlowContext . IN_INSTANCEOF : scope . problemReporter ( ) . localVariableNullInstanceof ( local , reference ) ; return ; } } break ; case FlowContext . MAY_NULL : if ( flowInfo . isDefinitelyNull ( local ) ) { scope . problemReporter ( ) . localVariableNullReference ( local , reference ) ; return ; } if ( flowInfo . isPotentiallyNull ( local ) ) { scope . problemReporter ( ) . localVariablePotentialNullReference ( local , reference ) ; return ; } if ( flowInfo . isDefinitelyNonNull ( local ) ) { return ; } break ; default : } } recordNullReference ( local , reference , checkType ) ; } } void removeFinalAssignmentIfAny ( Reference reference ) { } protected void recordNullReference ( LocalVariableBinding local , Expression expression , int status ) { } }

Fix:
if ( ( ( ( flowInfo . tagBits ) & ( FlowInfo . UNREACHABLE ) ) == 0 ) && ( ! ( flowInfo . isDefinitelyUnknown ( local ) ) ) ) {