whole_func_string: function SjlSet (iterable) {
              var self = this,
                  _values = [];
  
              // Define own props
              Object.defineProperties(this, {
                  /**
                   * @name _values
                   * @member {Array<*>} sjl.stdlib.SjlSet#_values - Where the values are kept on the Set.  Default `[]`.
                   * @readonly
                   */
                  _values: {
                      value: _values
                  },
  
                  /**
                   * @name size
                   * @member {Number} sjl.stdlib.SjlSet#size - Size of Set.  Default `0`.
                   * @readonly
                   */
                  size: {
                      get: function () {
                          return _values.length;
                      },
                      enumerable: true
                  }
              });
  
              // If an array was passed in inject values
              if (sjl.classOfIs(iterable, 'Array')) {
                  self.addFromArray(iterable);
              }
  
              // If anything other than an array is passed in throw an Error
              else if (typeof iterable !== _undefined) {
                  throw new Error ('Type Error: sjl.SjlSet takes only iterable objects as it\'s first parameter. ' +
                      ' Parameter received: ', iterable);
              }
  
              // Make our `_values` array inherit our special iterator
              makeIterable(_values);
  
              // Set custom iterator function on `this`
              self[sjl.Symbol.iterator] = function () {
                  return new ObjectIterator(_values, _values);
              };
  
              /**
               * Flag for knowing that default es6 iterator was overridden.  Set on construction.
               * @name _iteratorOverridden
               * @member {Boolean} sjl.stdlib.SjlSet#_iteratorOverridden.  Default `true`.
               * @readonly
               */
  
              // Set flag to remember that original iterator was overridden
              Object.defineProperty(self, '_iteratorOverridden', {value: true});
          }
func_code_string: function SjlSet (iterable) {
              var self = this,
                  _values = [];
  
              // Define own props
              Object.defineProperties(this, {
                  /**
                   * @name _values
                   * @member {Array<*>} sjl.stdlib.SjlSet#_values - Where the values are kept on the Set.  Default `[]`.
                   * @readonly
                   */
                  _values: {
                      value: _values
                  },
  
                  /**
                   * @name size
                   * @member {Number} sjl.stdlib.SjlSet#size - Size of Set.  Default `0`.
                   * @readonly
                   */
                  size: {
                      get: function () {
                          return _values.length;
                      },
                      enumerable: true
                  }
              });
  
              // If an array was passed in inject values
              if (sjl.classOfIs(iterable, 'Array')) {
                  self.addFromArray(iterable);
              }
  
              // If anything other than an array is passed in throw an Error
              else if (typeof iterable !== _undefined) {
                  throw new Error ('Type Error: sjl.SjlSet takes only iterable objects as it\'s first parameter. ' +
                      ' Parameter received: ', iterable);
              }
  
              // Make our `_values` array inherit our special iterator
              makeIterable(_values);
  
              // Set custom iterator function on `this`
              self[sjl.Symbol.iterator] = function () {
                  return new ObjectIterator(_values, _values);
              };
  
              /**
               * Flag for knowing that default es6 iterator was overridden.  Set on construction.
               * @name _iteratorOverridden
               * @member {Boolean} sjl.stdlib.SjlSet#_iteratorOverridden.  Default `true`.
               * @readonly
               */
  
              // Set flag to remember that original iterator was overridden
              Object.defineProperty(self, '_iteratorOverridden', {value: true});
          }
func_documentation_string: Constructor.
  @param iterable {Array} - Optional.
  @private
  @constructor