docs: function ChainNode(parent, key, value) {
      this._parent = parent;
      this._key = key;
  
      // _watching is true when calling get(this._parent, this._key) will
      // return the value of this node.
      //
      // It is false for the root of a chain (because we have no parent)
      // and for global paths (because the parent node is the object with
      // the observer on it)
      this._watching = value === undefined;
  
      this._chains = undefined;
      this._object = undefined;
      this.count = 0;
  
      this._value = value;
      this._paths = {};
      if (this._watching) {
        this._object = parent.value();
        if (this._object) {
          addChainWatcher(this._object, this._key, this);
        }
      }
    }