XMethod xmethod = XMethodFactory.createXMethod(classContext.getJavaClass(), method); database.setProperty(xmethod, property);
database.setProperty( XMethodFactory.createXMethod(classContext.getJavaClass(), method), property);
	private void analyzeMethod(ClassContext classContext, Method method) {		try {			// Look for null checks of parameters which postdominate the method entry						UnconditionalDerefProperty property = new UnconditionalDerefProperty();			CFG cfg = classContext.getCFG(method);			BasicBlock entry = cfg.getEntry();			PostDominatorsAnalysis pda = classContext.getNonExceptionPostDominatorsAnalysis(method);			ValueNumberDataflow vnaDataflow = classContext.getValueNumberDataflow(method);						ValueNumberFrame vnaFrameAtEntry = vnaDataflow.getStartFact(entry);			if (VERBOSE_DEBUG) System.out.print("[param map...");			Map<ValueNumber, Integer> valueNumberToParamMap = buildValueNumberToParamMap(method, vnaFrameAtEntry);			if (VERBOSE_DEBUG) System.out.print("ok]");						BitSet entryPostDominatorBlocks = pda.getStartFact(entry);						for (Iterator<BasicBlock> i = cfg.getBlocks(entryPostDominatorBlocks).iterator(); i.hasNext();) {				BasicBlock basicBlock = i.next();				if (VERBOSE_DEBUG) System.out.print(".[block " + basicBlock.getId() + "]");								if (!basicBlock.isNullCheck())					continue;				if (VERBOSE_DEBUG) System.out.println("[found postdominating null check]");				BasicBlock successorBlock = cfg.getSuccessorWithEdgeType(basicBlock, EdgeTypes.FALL_THROUGH_EDGE);				if (successorBlock == null || successorBlock.getFirstInstruction() == null) {					if (VERBOSE_DEBUG) System.out.println("[successor block null or empty?]");					continue;				}								ValueNumberFrame successorFrame = vnaDataflow.getStartFact(successorBlock);				if (!successorFrame.isValid()) {					if (VERBOSE_DEBUG) System.out.println("[Successor frame not valid!]");					continue; // Dead code?				}				InstructionHandle checkedHandle = successorBlock.getFirstInstruction();				ValueNumber checkedValue = successorFrame.getInstance(						checkedHandle.getInstruction(), classContext.getConstantPoolGen());								Integer param = valueNumberToParamMap.get(checkedValue);				if (param != null) {					// Found an unconditionally dereferenced parameter					property.setParamUnconditionalDeref(param.intValue(), true);				}			}						if (!property.isEmpty()) {				XMethod xmethod = XMethodFactory.createXMethod(classContext.getJavaClass(), method);				database.setProperty(xmethod, property);			}					} catch (CFGBuilderException e) {			bugReporter.logError("Error analyzing " + method + " for unconditional deref training", e);		} catch (DataflowAnalysisException e) {			bugReporter.logError("Error analyzing " + method + " for unconditional deref training", e);		}			}