code: @Override
      public boolean addData(IoBuffer data) {
          if (!this.canHandleData(data)) {
              return false;
          }
  
          data.get();
          this.updateSize(data);
          int idx = 0;
          int pos = 0;
          byte[] tmpData = new byte[this.blockDataSize];
  
          int countBlocks = this.blockCount;
          while (data.remaining() > 0 && countBlocks > 0) {
              short size = data.getShort();
              countBlocks--;
              if (size == 0) {
                  // Block has not been modified
                  idx += 1;
                  pos += this.blockDataSize;
                  continue;
              }
  
              // Store new block data
              this.blockSize[idx] = size;
              data.get(tmpData, 0, size);
              System.arraycopy(tmpData, 0, this.blockData, pos, size);
              idx += 1;
              pos += this.blockDataSize;
          }
  
          data.rewind();
          return true;
      }
docs: {@inheritDoc}