//>>built
define("dojox/mvc/ModelRefController",["dojo/_base/array","dojo/_base/declare","dojo/_base/lang","dojo/Stateful","./_Controller"],function(_1,_2,_3,_4,_5){return _2("dojox.mvc.ModelRefController",_5,{ownProps:null,_refModelProp:"model",_refInModelProp:"model",model:null,postscript:function(_6,_7){this._relTargetProp=(_6||{})._refModelProp||this._refModelProp;this.inherited(arguments);},get:function(_8){if(!this.hasControllerProperty(_8)){var _9=this[this._refModelProp];return !_9?void 0:_9.get?_9.get(_8):_9[_8];}return this.inherited(arguments);},_set:function(_a,_b){if(!this.hasControllerProperty(_a)){var _c=this[this._refModelProp];_c&&(_c.set?_c.set(_a,_b):(_c[_a]=_b));return this;}return this.inherited(arguments);},watch:function(_d,_e){if(this.hasControllerProperty(_d)){return this.inherited(arguments);}if(!_e){_e=_d;_d=null;}var hm=null,hp=null,_f=this;function _10(_11){if(hp){hp.unwatch();}if(_11&&_3.isFunction(_11.set)&&_3.isFunction(_11.watch)){hp=_11.watch.apply(_11,(_d?[_d]:[]).concat([function(_12,old,_13){_e.call(_f,_12,old,_13);}]));}};function _14(old,_15){var _16={};if(!_d){_1.forEach([old,_15],function(_17){var _18=_17&&_17.get("properties");if(_18){_1.forEach(_18,function(_19){if(!_f.hasControllerProperty(_19)){_16[_19]=1;}});}else{for(var s in _17){if(_17.hasOwnProperty(s)&&!_f.hasControllerProperty(s)){_16[s]=1;}}}});}else{_16[_d]=1;}for(var s in _16){_e.call(_f,s,!old?void 0:old.get?old.get(s):old[s],!_15?void 0:_15.get?_15.get(s):_15[s]);}};hm=_4.prototype.watch.call(this,this._refModelProp,function(_1a,old,_1b){if(old===_1b){return;}_14(old,_1b);_10(_1b);});_10(this.get(this._refModelProp));var h={};h.unwatch=h.remove=function(){if(hp){hp.unwatch();hp=null;}if(hm){hm.unwatch();hm=null;}};return h;},hasControllerProperty:function(_1c){return _1c=="_watchCallbacks"||_1c==this._refModelProp||_1c==this._refInModelProp||(_1c in (this.ownProps||{}))||(_1c in this.constructor.prototype)||/^dojoAttach(Point|Event)$/i.test(_1c);}});});