constructor(...args) {
    this._elements = new HashTable(args.length);
    this.add(...args);

    Object.defineProperty(this, 'size', {
      get: function() {
        return this._elements.size;
      }
    });
  }
Typical representation of a mathematical set
No restriction on element types
  i.e. set.add(1,'a', "b", { "foo" : "bar" })