docs: function(array, options) {
  		if(options.shouldRecordObservation === undefined) {
  			options.shouldRecordObservation = makeObject.shouldRecordObservationOnOwnAndMissingKeys;
  		}
  		var meta = {
  			target: array,
  			proxyKeys: options.proxyKeys !== undefined ? options.proxyKeys : Object.create(makeArray.proxyKeys()),
  			computedKeys: Object.create(null),
  			options: options,
  			// `preventSideEffects` is a counter used to "turn off" the proxy.  This is incremented when some
  			// function (like `Array.splice`) wants to handle event dispatching and/or calling
  			// `ObservationRecorder` itself for performance reasons.
  			preventSideEffects: 0
  		};
  		meta.proxyKeys[symbols.metaSymbol] = meta;
  		meta.proxy = new Proxy(array, {
  			get: makeObject.get.bind(meta),
  			set: makeArray.set.bind(meta),
  			ownKeys: makeObject.ownKeys.bind(meta),
  			deleteProperty: makeObject.deleteProperty.bind(meta),
  			meta: meta
  		});
  		mapBindings.addHandlers(meta.proxy, meta);
  		return meta.proxy;
  	}