docs: @Override
      public IsNullValueDataflow analyze(IAnalysisCache analysisCache, MethodDescriptor descriptor) throws CheckedAnalysisException {
          MethodGen methodGen = getMethodGen(analysisCache, descriptor);
          if (methodGen == null) {
              throw new MethodUnprofitableException(descriptor);
          }
          CFG cfg = getCFG(analysisCache, descriptor);
          ValueNumberDataflow vnaDataflow = getValueNumberDataflow(analysisCache, descriptor);
          DepthFirstSearch dfs = getDepthFirstSearch(analysisCache, descriptor);
          AssertionMethods assertionMethods = getAssertionMethods(analysisCache, descriptor.getClassDescriptor());
          TypeDataflow typeDataflow = getTypeDataflow(analysisCache, descriptor);
  
          IsNullValueAnalysis invAnalysis = new IsNullValueAnalysis(descriptor, methodGen, cfg, vnaDataflow, typeDataflow, dfs,
                  assertionMethods);
  
          // Set return value and parameter databases
  
          invAnalysis.setClassAndMethod(new JavaClassAndMethod(getJavaClass(analysisCache, descriptor.getClassDescriptor()),
                  getMethod(analysisCache, descriptor)));
  
          IsNullValueDataflow invDataflow = new IsNullValueDataflow(cfg, invAnalysis);
          invDataflow.execute();
          if (ClassContext.DUMP_DATAFLOW_ANALYSIS) {
              invDataflow.dumpDataflow(invAnalysis);
          }
          return invDataflow;
  
      }