public OutputController(IReportConfiguration configuration, IMessageSink diagnosticMessageSink)
        {
            _configuration         = configuration;
            _diagnosticMessageSink = diagnosticMessageSink;

            IReportWriter writer;

            if (!configuration.WriteOutput)
            {
                _diagnosticMessageSink.OnMessage(new DiagnosticMessage("Output is disabled"));
                writer = new NullWriter();
            }
            else
            {
                _diagnosticMessageSink.OnMessage(new DiagnosticMessage($"Creating report at {configuration.XmlReportFile}"));
                _fileStream = new FileStream(configuration.XmlReportFile, FileMode.Create, FileAccess.Write,
                                             FileShare.None, 4096, true);

                _sw = new StreamWriter(_fileStream);

                XmlWriterSettings xws = new XmlWriterSettings();
                xws.Async = true;
                _xw       = XmlWriter.Create(_sw, xws);

                writer = new ReportWriter(_xw);
            }
            Report = new ScenarioReport(configuration.AssemblyName, writer, _diagnosticMessageSink);
        }
        public OutputController(IReportConfiguration configuration)
        {
            _configuration = configuration;
            if (!configuration.WriteOutput)
            {
                Report = new ScenarioReport(configuration.AssemblyName, new NullWriter());
            }
            _fileStream = new FileStream(configuration.XmlReportFile, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true);

            _sw = new StreamWriter(_fileStream);

            XmlWriterSettings xws = new XmlWriterSettings();

            xws.Async = true;
            _xw       = XmlWriter.Create(_sw, xws);

            var writer = new ReportWriter(_xw);

            Report = new ScenarioReport(configuration.AssemblyName, writer);
        }