class ReportGenerator {

    public void generateReport(final AllScenariosPageCollection allScenariosPageCollection) throws CluecumberPluginException {
        String reportDirectory = propertyManager.getGeneratedHtmlReportDirectory();
        createDirectories(reportDirectory);
        copyStaticReportAssets(reportDirectory);
        copyCustomCss(reportDirectory);

        boolean redirectToFirstScenarioPage =
                propertyManager.getStartPage() == PluginSettings.StartPage.ALL_SCENARIOS &&
                        allScenariosPageCollection.getTotalNumberOfScenarios() == 1;

        generateStartPage(redirectToFirstScenarioPage);
        for (PageVisitor visitor : visitors) {
            allScenariosPageCollection.accept(visitor);
        }
    }

    @Inject  ReportGenerator(
            final FileIO fileIO,
            final TemplateEngine templateEngine,
            final PropertyManager propertyManager,
            final FileSystemManager fileSystemManager,
            final StartPageRenderer startPageRenderer,
            final CustomCssRenderer customCssRenderer,
            final VisitorDirectory visitorDirectory
    );

}