code: function getObservedObject(observer, object, arrayObserve) {
      var dir = observedObjectCache.pop() || newObservedObject();
      dir.open(observer);
      dir.observe(object, arrayObserve);
      return dir;
    }
docs: /*
  The observedSet abstraction is a perf optimization which reduces the total
  number of Object.observe observations of a set of objects. The idea is that
  groups of Observers will have some object dependencies in common and this
  observed set ensures that each object in the transitive closure of
  dependencies is only observed once. The observedSet acts as a write barrier
  such that whenever any change comes through, all Observers are checked for
  changed values.
  
  Note that this optimization is explicitly moving work from setup-time to
  change-time.
  
  TODO(rafaelw): Implement "garbage collection". In order to move work off
  the critical path, when Observers are closed, their observed objects are
  not Object.unobserve(d). As a result, it's possible that if the observedSet
  is kept open, but some Observers have been closed, it could cause "leaks"
  (prevent otherwise collectable objects from being collected). At some
  point, we should implement incremental "gc" which keeps a list of
  observedSets which may need clean-up and does small amounts of cleanup on a
  timeout until all is clean.