size(key?: string): number | undefined {
    if (key) {
      return this.sets[key] ? this.sets[key].size : undefined;
    }
    return Object.values(this.sets).reduce((acc, set) => acc + set.size, 0);