docs: private <A extends AbstractValue<A>, S extends Store<S>, T extends TransferFunction<A, S>>
        Result<A, S, T> dataflow(TreePath path, Context context, T transfer) {
      final ProcessingEnvironment env = JavacProcessingEnvironment.instance(context);
      final ControlFlowGraph cfg = cfgCache.getUnchecked(CfgParams.create(path, env));
      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;
        }
      };
    }