public long serializedSize(NamesQueryFilter f, int version) {
   TypeSizes sizes = TypeSizes.NATIVE;
   int size = sizes.sizeof(f.columns.size());
   ISerializer<CellName> serializer = type.cellSerializer();
   for (CellName cName : f.columns) size += serializer.serializedSize(cName, sizes);
   size += sizes.sizeof(f.countCQL3Rows);
   return size;
 }
  private RefCountedMemory serialize(V value) {
    long serializedSize = serializer.serializedSize(value, ENCODED_TYPE_SIZES);
    if (serializedSize > Integer.MAX_VALUE)
      throw new IllegalArgumentException("Unable to allocate " + serializedSize + " bytes");

    RefCountedMemory freeableMemory;
    try {
      freeableMemory = new RefCountedMemory(serializedSize);
    } catch (OutOfMemoryError e) {
      return null;
    }

    try {
      serializer.serialize(
          value, new EncodedDataOutputStream(new MemoryOutputStream(freeableMemory)));
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
    return freeableMemory;
  }