code: function Context(data, parent, path, env) {
  	/** 
  	 * Context will inherit of AsyncCollector to manage all internal or external asynchroneous calls.
  	 * It allows us to know when a context and its descendants are stabilised(i.e.all data are up to date).
  	 **/
  	AsyncCollector.call(this);
  	this.__yContext__ = true;
  	this.data = (data !== undefined) ? data : {};
  	this.map = {};
  	this.binds = [];
  	if (parent) {
  		this.parent = parent;
  		this.env = env ? new Context(env) : parent.env;
  		if (path) {
  			var self = this;
  			this.path = path;
  			this.data = this.data || parent.get(path);
  			this.parent.subscribe(path, function(value, type, p, key) {
  				// console.log('binded context update : ', type, path, p, key, value);
  				if (!p.length)
  					p.push('$this');
  				switch (type) {
  					case 'set':
  						self.set(p, value, true);
  						break;
  					case 'push':
  						self.push(p, value, true);
  						break;
  					case 'delete':
  						self.del(p, true);
  						break;
  					case 'displaceItem':
  						self.displaceItem(p, value, true);
  						break;
  					case 'insertItem':
  						self.insertItem(p, value, true);
  						break;
  					case 'deleteItem':
  						self.deleteItem(p, value, true);
  						break;
  				}
  			}, true, this.binds);
  		}
  	} else
  		this.env = env ? (env.__yContext__ ? env : new Env(env)) : Context.env;
  }
docs: _____________________ CLASS DEF