docs: function SubsetIterator() {
      var items = Array.prototype.slice.call(arguments, 0);
  
      this.items = (items.length == 1 && Array.isArray(items[0])) ? items[0] : items;
  
      // since we're using a bit mask, we can't have more than 32 elements. That's 2^32-1
      // subsets so that should be reasonable
  
      if (this.items.length > 32) {
          throw new Error("SubsetIterators cannot work with more than 32 elements");
      }
  
      this.max = Math.pow(2, this.items.length);
      this.reset();
  }