anchor.diff:      if(nextLF < 0) {
         // no more new lines, return what's left and set postion = null
         final value = source.substring(position, source.length);
  -      _position = null;
  +      if(updatePosition) {
  +        _position = null;
  +      }
         return value;
       }
   
  
positive.code:     final value = isWinNL ? source.substring(_position, nextLF-1) :
        source.substring(_position, nextLF);
  
      _position = nextLF + 1;
  
      return value;
    }
  
    String readToEnd() {
      if(_position == null) {
        return null;
      }
      final value = source.substring(position, source.length);
      _position = null;
      return value;
    }
  }
  
negative.code: 
    int get position => _position;
  
    String readNextLine() => _peekOrReadNextLine(true);
  
    String peekNextLine() => _peekOrReadNextLine(false);
  
    String readToEnd() {
      if(_position == null) {
        return null;
      }
      final value = source.substring(position, source.length);
      _position = null;
      return value;
    }
  
    String _peekOrReadNextLine(bool updatePosition) {
      if(_position == null) {
        return null;
      }
  