database.setProperty(xmethod, new MayReturnNullProperty(true));
database.setProperty(xmethod, Boolean.TRUE);
	private void analyzeMethod(ClassContext classContext, Method method) {		try {			CFG cfg = classContext.getCFG(method);			IsNullValueDataflow invDataflow = classContext.getIsNullValueDataflow(method);			BasicBlock exit = cfg.getExit();						for (Iterator<Edge> i = cfg.incomingEdgeIterator(exit); i.hasNext();) {				Edge edge = i.next();				if (edge.getType() != EdgeTypes.RETURN_EDGE) {					continue;				}								// The last instruction in the source block should be a return				BasicBlock source = edge.getSource();				InstructionHandle last = source.getLastInstruction();								Instruction ins = last.getInstruction();				if (!(ins instanceof ReturnInstruction)) {					// ???					continue;				}								IsNullValueFrame frame = invDataflow.getFactAtLocation(new Location(last, source));				if (!frame.isValid())					continue; // dead code								IsNullValue tos = frame.getTopValue();								if (tos.mightBeNull()) {					XMethod xmethod = XMethodFactory.createXMethod(classContext.getJavaClass(), method); 					database.setProperty(xmethod, new MayReturnNullProperty(true));					return;				}			}					} catch (DataflowAnalysisException e) {			bugReporter.logError("Error analyzing " + method + " for null value return training", e);		} catch (CFGBuilderException e) {			bugReporter.logError("Error analyzing " + method + " for null value return training", e);		}	}