Buggy code:
public class LoopingFlowContext extends SwitchFlowContext { public BranchLabel continueLabel ; public UnconditionalFlowInfo initsOnContinue = FlowInfo . DEAD_END ; private UnconditionalFlowInfo upstreamNullFlowInfo ; private LoopingFlowContext [ ] innerFlowContexts = null ; private UnconditionalFlowInfo [ ] innerFlowInfos = null ; private int innerFlowContextsNb = 0 ; Reference [ ] finalAssignments ; VariableBinding [ ] finalVariables ; int assignCount = 0 ; LocalVariableBinding [ ] nullLocals ; Expression [ ] nullReferences ; int [ ] nullCheckTypes ; int nullCount ; Scope associatedScope ; public LoopingFlowContext ( FlowContext parent , FlowInfo upstreamNullFlowInfo , ASTNode associatedNode , BranchLabel breakLabel , BranchLabel continueLabel , Scope associatedScope ) { } public void complainOnDeferredFinalChecks ( BlockScope scope , FlowInfo flowInfo ) { } public void complainOnDeferredNullChecks ( BlockScope scope , FlowInfo flowInfo ) { } public BranchLabel continueLabel ( ) { } public String individualToString ( ) { } public boolean isContinuable ( ) { } public boolean isContinuedTo ( ) { } public void recordContinueFrom ( FlowContext innerFlowContext , FlowInfo flowInfo ) { } protected boolean recordFinalAssignment ( VariableBinding binding , Reference finalAssignment ) { } protected void recordNullReference ( LocalVariableBinding local , Expression expression , int status ) { } public void recordUsingNullReference ( Scope scope , LocalVariableBinding local , Expression reference , int checkType , FlowInfo flowInfo ) { if ( ( ( ( flowInfo . tagBits ) & ( FlowInfo . UNREACHABLE ) ) != 0 ) || ( flowInfo . isDefinitelyUnknown ( local ) ) ) { return ; } switch ( checkType ) { case FlowContext . CAN_ONLY_NULL_NON_NULL : if ( flowInfo . isDefinitelyNonNull ( local ) ) { scope . problemReporter ( ) . localVariableCannotBeNull ( local , reference ) ; return ; } if ( flowInfo . isDefinitelyNull ( local ) ) { scope . problemReporter ( ) . localVariableCanOnlyBeNull ( local , reference ) ; return ; } <START_BUG> if ( flowInfo . isPotentiallyUnknown ( local ) ) { <END_BUG> return ; } if ( flowInfo . isPotentiallyNonNull ( local ) ) { recordNullReference ( local , reference , FlowContext . CAN_ONLY_NON_NULL ) ; } else { recordNullReference ( local , reference , checkType ) ; } return ; case FlowContext . CAN_ONLY_NULL : if ( ( flowInfo . isPotentiallyNonNull ( local ) ) || ( flowInfo . isPotentiallyUnknown ( local ) ) ) { return ; } if ( flowInfo . isDefinitelyNull ( local ) ) { scope . problemReporter ( ) . localVariableCanOnlyBeNull ( local , reference ) ; return ; } recordNullReference ( local , reference , checkType ) ; return ; case FlowContext . MAY_NULL : if ( flowInfo . isDefinitelyNonNull ( local ) ) { return ; } if ( flowInfo . isDefinitelyNull ( local ) ) { scope . problemReporter ( ) . localVariableCanOnlyBeNull ( local , reference ) ; return ; } if ( flowInfo . isPotentiallyNull ( local ) ) { scope . problemReporter ( ) . localVariableMayBeNull ( local , reference ) ; return ; } recordNullReference ( local , reference , checkType ) ; return ; default : } } void removeFinalAssignmentIfAny ( Reference reference ) { } }

Fix:
if ( flowInfo . cannotBeDefinitelyNullOrNonNull ( local ) ) {