if (atLeastTwice.containsKey(handle)) continue;
if (sometimesGood.containsKey(handle)) continue;
	private void analyzeMethod(ClassContext classContext, Method method)			throws CFGBuilderException, DataflowAnalysisException {		BitSet lineMentionedMultipleTimes = ClassContext.linesMentionedMultipleTimes(method);		BitSet linesWithLoadsOfNotDefinitelyNullValues = null;				CFG cfg = classContext.getCFG(method);		IsNullValueDataflow nullValueDataflow = classContext				.getIsNullValueDataflow(method);		MethodGen methodGen = classContext.getMethodGen(method);		String sourceFile = classContext.getJavaClass().getSourceFileName();		if (lineMentionedMultipleTimes.cardinality() > 0) {			linesWithLoadsOfNotDefinitelyNullValues = new BitSet();			LineNumberTable lineNumbers = method.getLineNumberTable();			for (Iterator<Location> i = cfg.locationIterator(); i.hasNext();) {				Location location = i.next();				InstructionHandle handle = location.getHandle();				Instruction ins = handle.getInstruction();				if (!(ins instanceof ALOAD))					continue;				IsNullValueFrame frame = nullValueDataflow						.getFactAtLocation(location);				if (!frame.isValid()) {					// This basic block is probably dead					continue;				}				// System.out.println(handle.getPosition() + "\t" + ins.getName() +  "\t" + frame);								ALOAD load = (ALOAD) ins;				int index = load.getIndex();				IsNullValue v = frame.getValue(index);				if (!v.isDefinitelyNull()) {					int sourceLine = lineNumbers.getSourceLine(handle.getPosition());					if (sourceLine > 0)					linesWithLoadsOfNotDefinitelyNullValues.set(sourceLine);				}		}		}						IdentityHashMap<InstructionHandle, Object> atLeastOnce = new	IdentityHashMap<InstructionHandle, Object>();		IdentityHashMap<InstructionHandle, Object> atLeastTwice = new	IdentityHashMap<InstructionHandle, Object>();				for (Iterator<Location> i = cfg.locationIterator(); i.hasNext();) {			InstructionHandle handle = i.next().getHandle();			Instruction ins = handle.getInstruction();			if (ins instanceof ALOAD) {				if (atLeastOnce.containsKey(handle))					atLeastTwice.put(handle, null);				else					atLeastOnce.put(handle, null);			}		}				// System.out.println(nullValueDataflow);		for (Iterator<Location> i = cfg.locationIterator(); i.hasNext();) {			Location location = i.next();			InstructionHandle handle = location.getHandle();			Instruction ins = handle.getInstruction();			if (!(ins instanceof ALOAD))				continue;			if (atLeastTwice.containsKey(handle)) continue;			IsNullValueFrame frame = nullValueDataflow					.getFactAtLocation(location);			if (!frame.isValid()) {				// This basic block is probably dead				continue;			}			// System.out.println(handle.getPosition() + "\t" + ins.getName() +  "\t" + frame);						ALOAD load = (ALOAD) ins;			int index = load.getIndex();			IsNullValue v = frame.getValue(index);			if (v.isDefinitelyNull()) {				Instruction next = handle.getNext().getInstruction();				InstructionHandle prevHandle = handle.getPrev();				SourceLineAnnotation sourceLineAnnotation = SourceLineAnnotation				.fromVisitedInstruction(classContext, methodGen, sourceFile, handle);				SourceLineAnnotation prevSourceLineAnnotation = SourceLineAnnotation				.fromVisitedInstruction(classContext, methodGen, sourceFile, prevHandle);					if (next instanceof ARETURN) {					// probably stored for duration of finally block					continue;				}				int startLine = sourceLineAnnotation.getStartLine();				if (startLine > 0 && lineMentionedMultipleTimes.get(startLine) && linesWithLoadsOfNotDefinitelyNullValues.get(startLine))					continue;								if (startLine > prevSourceLineAnnotation.getEndLine()) {					// probably stored for duration of finally block					// System.out.println("Inverted line");					continue;				}				int priority = NORMAL_PRIORITY;								if (!v.isChecked()) priority++;				// System.out.println("lineMentionedMultipleTimes: " + lineMentionedMultipleTimes);				// System.out.println("linesWithLoadsOfNonNullValues: " + linesWithLoadsOfNotDefinitelyNullValues);								bugReporter.reportBug(new BugInstance(this,						"NP_LOAD_OF_KNOWN_NULL_VALUE",						priority)						.addClassAndMethod(methodGen, sourceFile)						.addSourceLine(sourceLineAnnotation));			}		}	}