code: function enumerate(object, kind) {
  
    // First check specific iterators.
    if (typeof object === 'string') {
      return StringIterators[kind || KIND_VALUES](object);
    } else if (Array.isArray(object)) {
      return ArrayIterators[kind || KIND_VALUES](object);
  
    // Then see if an object implements own.
    } else if (object[Symbol.iterator]) {
      return object[Symbol.iterator]();
  
    // And fallback to generic with entries.
    } else {
      return GenericIterators[kind || KIND_ENTRIES](object);
    }
  }
docs: ----------------------------------------------------------------- 
  Main iterator function. Returns default iterator based
  on the class of an instance.