private DataflowResult<DataflowType> compute(TypeQualifierValue<?> typeQualifierValue) {
DataflowResult<DataflowType> result = new DataflowResult<DataflowType>();
try {
IAnalysisCache analysisCache = Global.getAnalysisCache();
DepthFirstSearch dfs = analysisCache.getMethodAnalysis(DepthFirstSearch.class, methodDescriptor);
XMethod xmethod = XFactory.createXMethod(methodDescriptor);
CFG cfg = analysisCache.getMethodAnalysis(CFG.class, methodDescriptor);
ValueNumberDataflow vnaDataflow = analysisCache.getMethodAnalysis(ValueNumberDataflow.class, methodDescriptor);
ConstantPoolGen cpg = analysisCache.getClassAnalysis(ConstantPoolGen.class, methodDescriptor.getClassDescriptor());
DataflowType dataflow = getDataflow(dfs, xmethod, cfg, vnaDataflow, cpg, analysisCache, methodDescriptor,
typeQualifierValue);
result.dataflow = dataflow;
if (TypeQualifierDatabase.USE_DATABASE) {
try {
populateDatabase(dataflow, vnaDataflow, xmethod, typeQualifierValue);
} catch (DataflowAnalysisException e) {
analysisCache.getErrorLogger().logError("Error populating type qualifier database", e);
}
}
} catch (CheckedAnalysisException e) {
result.checkedException = e;
} catch (RuntimeException e) {