nl_tokens: Constructor .
pl_tokens: function ObjectIterator ( keysOrObj , values ) { var obj , classOfParam0 = sjl . classOf ( keysOrObj ) , receivedParamTypesList , _values , _keys ; // Constructor scenario 1 (if param `0` is of type `Object`) if ( classOfParam0 === 'Object' ) { obj = keysOrObj ; _keys = Object . keys ( obj ) ; _values = _keys . map ( function ( key ) { return obj [ key ] ; } ) ; } // Constructor scenario 2 (if param `0` is of type `Array`) else if ( classOfParam0 === 'Array' ) { sjl . throwTypeErrorIfNotOfType ( contextName , 'values' , <mask> , Array , 'With the previous param being an array `values` can only be an array in this scenario.' ) ; _keys = keysOrObj ; _values = values ; } // Else failed constructor scenario else { receivedParamTypesList = [ classOfParam0 , sjl . classOf ( values ) ] ; throw new TypeError ( '#`' + contextName + '` received incorrect parameter values.  The expected ' + 'parameter list should be one of two: [Object] or [Array, Array].  ' + 'Parameter list received: [' + receivedParamTypesList . join ( ', ' ) + '].' ) ; } // Extend #own properties with #Iterator's own properties Iterator . call ( this , _values ) ; // @note Defining member jsdoc blocks here since our members are defined using Object.defineProperties() //   and some IDEs don't handle this very well (E.g., WebStorm) /**
               * Object iterator keys.  Set on construction.
               * @member {Array<*>} sjl.stdlib.ObjectIterator#keys
               * @readonly
               */ // Define other own propert(y|ies) Object . defineProperty ( this , '_keys' , { value : _keys } ) ; }