code: function(type /* set, delete, push */ , path, value, index) {
  		this.assertNotDestroyed('notify', path);
  		path = parsePath(path);
  		// console.log('context notify  : ', type, path, value, index);
  		if (path[0] === '$parent') {
  			this.assertHasParent(path);
  			return this.parent.notify(type, path.slice(1), value, index) && this;
  		}
  
  		if (path[0] === '$this')
  			path = path.slice(1);
  
  		var space = this.map,
  			i = 0,
  			star,
  			localPath = path.slice(1);
  
  		if (!path.length)
  			return this.notifyDownstream(this.map, type, path, value, index);
  
  		if (this.map._upstreams)
  			this.notifyUpstream(this.map, type, path, value, index);
  
  		//_____________________ UPSTREAM
  		for (var len = path.length - 1; i < len; ++i) {
  			if (!(space = space[path[i]]))
  				break;
  			if (space._upstreams)
  				this.notifyUpstream(space, type, localPath, value, index);
  			localPath = localPath.slice(1);
  		}
  		// ____________________ DOWNSTREAM
  		if (!space)
  			return this;
  		space = path.length ? space[path[i]] : space;
  		if (space)
  			this.notifyDownstream(space, type, path, value, index);
  		return this;
  	}
docs: _______________________________________________________ NOTIFICATION