Type tos = frame.getTopValue(); if (tos.getType() == ExtendedTypes.T_NULL) { if (DEBUG) System.out.println("Ignoring dead store of null value"); continue; }
	private void analyzeMethod(ClassContext classContext, Method method)		throws DataflowAnalysisException, CFGBuilderException {		JavaClass javaClass = classContext.getJavaClass();		Dataflow<BitSet, LiveLocalStoreAnalysis> llsaDataflow =			classContext.getLiveLocalStoreDataflow(method);		MethodGen methodGen = classContext.getMethodGen(method);		CFG cfg = classContext.getCFG(method);		for (Iterator<Location> i = cfg.locationIterator(); i.hasNext(); ) {			Location location = i.next();			if (!isStore(location))				continue;			// Ignore exception handler blocks:			// javac always stores caught exceptions in			// a local, even if the value is not used.			if (location.getBasicBlock().isExceptionHandler())				continue;			IndexedInstruction store = (IndexedInstruction) location.getHandle().getInstruction();			int local = store.getIndex();			BitSet liveStoreSet = llsaDataflow.getAnalysis().getFactAtLocation(location);			if (liveStoreSet.get(local))				continue;			// Store is dead			// Ignore dead assignments of null.			// This is generally just defensive programming.			TypeDataflow typeDataflow = classContext.getTypeDataflow(method);			TypeFrame frame = typeDataflow.getFactAtLocation(location);			if (!frame.isValid() || frame.getStackDepth() == 0)				continue;			Type tos = frame.getTopValue();			if (tos.getType() == ExtendedTypes.T_NULL) {				if (DEBUG) System.out.println("Ignoring dead store of null value");				continue;			}			BugInstance bugInstance = new BugInstance("DLS_DEAD_LOCAL_STORE", NORMAL_PRIORITY)				.addClassAndMethod(methodGen, javaClass.getSourceFileName())				.addSourceLine(methodGen, javaClass.getSourceFileName(), location.getHandle());			bugReporter.reportBug(bugInstance);		}	}