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