anchor.diff:    String get decoded() {
       if (isEmpty()) return null;
   
  -    String result =  new String.fromCharCodes(_result);
  -    _charOffset += result.length;
  +    String result;
  +    if (_resultOffset == 0) {
  +      result = new String.fromCharCodes(_result);
  +    } else {
  +      result =
  +          new String.fromCharCodes(
  +              _result.getRange(_resultOffset, _result.length - _resultOffset));
  +    }
       while (!_lineBreakEnds.isEmpty() && _lineBreakEnds.first() < _charOffset) {
         _lineBreakEnds.removeFirst();
         _lineBreaks--;
       }
  -    _result = new List<int>();
  +    _resetResult();
       return result;
     }
   
  
positive.code: class _StringDecoderBase implements _StringDecoder {
    _StringDecoderBase()
        : _bufferList = new _BufferList(),
        _result = new List<int>(),
        _lineBreakEnds = new Queue<int>();
  
    int write(List<int> buffer) {
      _bufferList.add(buffer);
  
negative.code:         _result[lineEnd - _charOffset - 1] == CR) {
        terminationSequenceLength = 2;
      }
      var lineLength =
          lineEnd - _charOffset - _resultOffset - terminationSequenceLength + 1;
      String result =
          new String.fromCharCodes(_result.getRange(_resultOffset, lineLength));
      _lineBreaks--;
      _resultOffset += (lineLength + terminationSequenceLength);
      if (_result.length == _resultOffset) _resetResult();
      return result;
    }
  
  