public ReadResponse deserialize(DataInput dis, int version) throws IOException {
    byte[] digest = null;
    int digestSize = dis.readInt();
    if (digestSize > 0) {
      digest = new byte[digestSize];
      dis.readFully(digest, 0, digestSize);
    }
    boolean isDigest = dis.readBoolean();
    assert isDigest == digestSize > 0;

    Row row = null;
    if (!isDigest) {
      // This is coming from a remote host
      row =
          Row.serializer.deserialize(
              dis, version, ColumnSerializer.Flag.FROM_REMOTE, ArrayBackedSortedColumns.factory());
    }

    return isDigest ? new ReadResponse(ByteBuffer.wrap(digest)) : new ReadResponse(row);
  }