internal BufferedReaderWithNewLine(InputStreamBytes stream)
 {
     this.stream = stream;
 }
        private ReadJournalResponseState ReadJournal(InputStreamBytes bytes, bool eof)
        {
            var stream = new BufferedReaderWithNewLine(bytes);
            var events = new List<Event>();
            string line;
            while ((line = stream.ReadLine(eof)) != null)
            {
                events.Add(new Event(line, Option<string>.None));
            }

            var previousSize = previousState.Response
                .Select(r => { return (ReadJournalResponse)r; })
                .Select(r => { return r.Bytes; }).GetOrElse(0);
            var previousItems = previousState.Response
                .Select(r => { return (ReadJournalResponse)r; })
                .Select(r => { return r.Events; }).GetOrElse(new List<Event>());

            var totalBytes = bytes.Length + previousSize;
            var items = new List<Event>(previousItems);
            items.AddRange(events);

            return new ReadJournalResponseState(totalBytes, items, eof, stream.BytesLeft);
        }