docs: private static <A extends AbstractValue<A>, S extends Store<S>, T extends TransferFunction<A, S>>
        Result<A, S, T> methodDataflow(TreePath methodPath, Context context, T transfer) {
      final ProcessingEnvironment env = JavacProcessingEnvironment.instance(context);
  
      final ControlFlowGraph cfg;
      try {
        cfg = cfgCache.getUnchecked(CfgParams.create(methodPath, env));
      } catch (UncheckedExecutionException e) {
        throw e.getCause() instanceof CompletionFailure ? (CompletionFailure) e.getCause() : e;
      }
      final AnalysisParams aparams = AnalysisParams.create(transfer, cfg, env);
      @SuppressWarnings("unchecked")
      final Analysis<A, S, T> analysis = (Analysis<A, S, T>) analysisCache.getUnchecked(aparams);
  
      return new Result<A, S, T>() {
        @Override
        public Analysis<A, S, T> getAnalysis() {
          return analysis;
        }
  
        @Override
        public ControlFlowGraph getControlFlowGraph() {
          return cfg;
        }
      };
    }