code: function(object, data) {
              var props = getProps(object),
                  values = [], descs, i = 0,
                  data = {
                      handlers: createMap(),
                      frozen: O.isFrozen ? O.isFrozen(object) : false,
                      extensible: O.isExtensible ? O.isExtensible(object) : true,
                      proto: getPrototype && getPrototype(object),
                      properties: props,
                      values: values,
                      notifier: retrieveNotifier(object, data)
                  };
  
              if (getDescriptor) {
                  descs = data.descriptors = [];
                  while (i < props.length) {
                      descs[i] = getDescriptor(object, props[i]);
                      values[i] = object[props[i++]];
                  }
              } else while (i < props.length)
                  values[i] = object[props[i++]];
  
              observed.set(object, data);
  
              return data;
          }
docs: Functions for internal usage 
  Checks if the argument is an Array object. Polyfills Array.isArray.
  @function isArray
  @param {?*} object
  @returns {Boolean}