/// <summary>
            /// Occurs after a line was read from the <see cref="TextReader"/> and returns a new <see cref="LogLine"/> object.
            /// </summary>
            /// <param name="line">The line read from the <see cref="TextReader"/>.</param>
            /// <param name="index">The index of the line read from the <see cref="TextReader"/>.</param>
            /// <returns>A new <see cref="LogLine"/> object from the string line and line index.</returns>
            protected override LogLine OnReadLine(string line, int index)
            {
                LogLineType lineType = LogLineTypeResolver.Resolve(line);
                LogLineTimeStampParserFunction timeStampParser = LogLineTimeStampParser.ParseTimeStamp;

                LogLineDataParserDictionary.TryGetValue(lineType, out LogLineDataParserFunction dataParser);
                return(new LazyLogLine(line, index, lineType, timeStampParser, dataParser));
            }
 /// <summary>
 /// Initializes a new instance of the <see cref="LegacyLogTextReader"/> class.
 /// </summary>
 /// <param name="textReader">The <see cref="TextReader"/> that provides line data as a string.</param>
 /// <param name="logLineTypeResolver">The <see cref="LogLineTypeResolver"/> used to resolve the <see cref="LogLineType"/> from a log line.</param>
 /// <param name="logLineDataParserDictionary">The <see cref="LogLineDataParserDictionary"/> that provides parsing functions for each <see cref="LogLineType"/>.</param>
 /// <param name="logLineTimeStampParser">The <see cref="LogLineTimeStampParser"/> used to parse time stamp information from a log line.</param>
 protected LegacyLogTextReader(TextReader textReader,
                               LogLineTypeResolver logLineTypeResolver,
                               LogLineDataParserDictionary logLineDataParserDictionary,
                               LogLineTimeStampParser logLineTimeStampParser)
     : base(textReader)
 {
     LogLineTypeResolver         = logLineTypeResolver ?? LegacyLogLineTypeResolver.Instance;
     LogLineDataParserDictionary = logLineDataParserDictionary ?? LegacyLogLineDataParserDictionary.Instance;
     LogLineTimeStampParser      = logLineTimeStampParser ?? LogLineTimeStampParser.Instance;
 }