code: @Override
      public void postCrawling(CrawlSession session, ExitStatus exitStatus) {
          LOG.debug("postCrawling");
          StateFlowGraph sfg = session.getStateFlowGraph();
          checkSFG(sfg);
          // TODO: call state abstraction function to get distance matrix and run rscript on it to
          // create clusters
          String[][] clusters = null;
          // generateClusters(session);
  
          result = outModelCache.close(session, exitStatus, clusters);
  
          outputBuilder.write(result, session.getConfig(), clusters);
          StateWriter writer =
                  new StateWriter(outputBuilder, sfg, ImmutableMap.copyOf(visitedStates));
          for (State state : result.getStates().values()) {
              try {
                  writer.writeHtmlForState(state);
              } catch (Exception Ex) {
                  LOG.info("couldn't write state :" + state.getName());
              }
          }
          LOG.info("Crawl overview plugin has finished");
      }
docs: Generated the report.