readDeleteSet = decoder => {
  const ds = new DeleteSet();
  const numClients = decoding.readVarUint(decoder.restDecoder);

  for (let i = 0; i < numClients; i++) {
    decoder.resetDsCurVal();
    const client = decoding.readVarUint(decoder.restDecoder);
    const numberOfDeletes = decoding.readVarUint(decoder.restDecoder);

    if (numberOfDeletes > 0) {
      const dsField = map.setIfUndefined(ds.clients, client, () => []);

      for (let i = 0; i < numberOfDeletes; i++) {
        dsField.push(new DeleteItem(decoder.readDsClock(), decoder.readDsLen()));
      }
    }
  }

  return ds;
}
@param {DSDecoderV1 | DSDecoderV2} decoder
@return {DeleteSet}

@private
@function