RedundantBranch redundantBranch = new RedundantBranch(lastHandle, lineNumber);
boolean redundantNullCheck = top.isChecked() || topNext.isChecked();   RedundantBranch redundantBranch = new RedundantBranch(lastHandle, lineNumber, redundantNullCheck);
	private void analyzeRefComparisonBranch(Method method, IsNullValueDataflow invDataflow, BasicBlock basicBlock,		InstructionHandle lastHandle) throws DataflowAnalysisException {		IsNullValueFrame frame = invDataflow.getFactAtLocation(new Location(lastHandle, basicBlock));		if (!frame.isValid()) {			// Probably dead code due to pruning infeasible exception edges.			return;		}		if (frame.getStackDepth() < 2)			throw new AnalysisException("Stack underflow at " + lastHandle);		// Find the line number.		int lineNumber = getLineNumber(method, lastHandle);		if (lineNumber < 0)			return;		int numSlots = frame.getNumSlots();		IsNullValue top = frame.getValue(numSlots - 1);		IsNullValue topNext = frame.getValue(numSlots - 2);		boolean definitelySame = top.isDefinitelyNull() && topNext.isDefinitelyNull();		boolean definitelyDifferent =			(top.isDefinitelyNull() && topNext.isDefinitelyNotNull()) || 			(top.isDefinitelyNotNull() && topNext.isDefinitelyNull());		if (definitelySame || definitelyDifferent) {			if (definitelySame) {				if (DEBUG) System.out.println("Line " + lineNumber + " always same");				definitelySameBranchSet.set(lineNumber);			}			if (definitelyDifferent) {				if (DEBUG) System.out.println("Line " + lineNumber + " always different");				definitelyDifferentBranchSet.set(lineNumber);			}			//reportUselessControlFlow(classContext, method, lastHandle);			RedundantBranch redundantBranch = new RedundantBranch(lastHandle, lineNumber);			if (DEBUG) System.out.println("Adding redundant branch: " + redundantBranch);			redundantBranchList.add(redundantBranch);		} else {			if (DEBUG) System.out.println("Line " + lineNumber + " undetermined");			undeterminedBranchSet.set(lineNumber);		}	}