anchor.diff:      _currentLimit = _sizeLimit;
     }
   
  -  void _reportTruncatedMessage(int limit) {
  +  void _throwTruncatedMessageError(int limit) {
       if (limit > _sizeLimit && limit <= _buffer.length) {
         throw InvalidProtocolBufferException.truncatedMessageDueToSizeLimit(
             _buffer.length, _sizeLimit);
  
positive.code:     var oldLimit = _currentLimit;
      _currentLimit = _bufferPos + length;
      if (_currentLimit > oldLimit) {
        _reportTruncatedMessage(_currentLimit);
      }
      ++_recursionDepth;
      message.mergeFromCodedBufferReader(this, extensionRegistry);
  
negative.code:     byteLimit += _bufferPos;
      var oldLimit = _currentLimit;
      if ((oldLimit != -1 && byteLimit > oldLimit) || byteLimit > _sizeLimit) {
        _throwTruncatedMessageError(byteLimit);
      }
      _currentLimit = byteLimit;
      callback();
  