anchor.diff:          }
         }
         if (skip > 0) {
  -        adder(chunk.substring(startPos, pos));
  +        var val = chunk.substring(startPos, pos);
  +
  +        adder(ChromeLogRecord.parse(val));
           startPos = pos = pos + skip;
         } else {
           pos++;
  
positive.code:   return file.openRead()
        .transform(new Utf8Decoder())
        .transform(new LineSplitter())
        .forEach((String block) {
          print('Line!');
          print(block.length);
        });
  }
  
  //final _chromeLogRegexp = new RegExp('\[(\d+)\:(\d+)\:(\d+)/(\d+):(\w+):(.*)\]', multiLine: false);
  
  
  class LineSplitter extends Converter<String, List<String>> {
    List<String> convert(String data) {
      var lines = new List<String>();
  
      _LineSplitterSink._addSlice(data, 0, data.length, true, lines.add);
  
      return lines;
    }
  
    ChunkedConversionSink startChunkedConversion(ChunkedConversionSink<String> sink) {
      if (sink is! StringConversionSink) {
        sink = new StringConversionSink.from(sink);
      }
      return new _LineSplitterSink(sink);
    }
  }
  
negative.code:       carry = chunk.substring(startPos, pos);
      }
      if(isLast && carry != null) {
        adder(ChromeLogRecord.parse(carry));
        return null;
      }
      return carry;
  