public RoundStateImpl(boolean errorRaised,
                          boolean sourceFilesCreated,
                          boolean classFilesCreated,
                          Map<String,String> options) {
        /*
         * In the default mode of operation, this round is the final
         * round if an error was raised OR there were no new source
         * files generated.  If classes are being treated as
         * declarations, this is the final round if an error was
         * raised OR neither new source files nor new class files were
         * generated.
         */
        this.finalRound =
            errorRaised ||
            (!sourceFilesCreated &&
            !(classFilesCreated && options.keySet().contains("-XclassesAsDecls")) );
        this.errorRaised = errorRaised;
        this.sourceFilesCreated = sourceFilesCreated;
        this.classFilesCreated = classFilesCreated;
    }