function(path) {
		if (typeof path === "string") path = parse(path, { startRule: "path" });
		if (!_.isObject(path)) throw new Error("Expecting string or object for path.");
		var self = this;
		this._dep.depend();

		return _.reduce(path.parts, function(target, part) {
			target = self._get(target, part.key);

			_.each(part.children, function(k) {
				if (_.isObject(k)) k = self.get(k);
				target = self._get(target, k);
			});

			return target;
		}, this.data);
	}
function(path) {
		if (typeof path === "string") path = parse(path, { startRule: "path" });
		if (!_.isObject(path)) throw new Error("Expecting string or object for path.");
		var self = this;
		this._dep.depend();

		return _.reduce(path.parts, function(target, part) {
			target = self._get(target, part.key);

			_.each(part.children, function(k) {
				if (_.isObject(k)) k = self.get(k);
				target = self._get(target, k);
			});

			return target;
		}, this.data);
	}
function ( path ) { if ( typeof path === "string" ) path = parse ( path , { startRule : "path" } ) ; if ( ! _ . isObject ( path ) ) throw new Error ( "Expecting string or object for path." ) ; var self = this ; this . _dep . depend ( ) ; return _ . reduce ( path . parts , function ( target , part ) { target = self . _get ( target , part . key ) ; _ . each ( part . children , function ( k ) { if ( _ . isObject ( k ) ) k = self . get ( k ) ; target = self . _get ( target , k ) ; } ) ; return target ; } , this . data ) ; }
returns the value at path, but only looks in the data on this model
returns the value at path but only looks in the data on this model