define(function(){var i=require.mix;return{destroy:function(){for(var i in this)delete this[i];this._alive=0},addEventListener:function(i,e){this.listeners||(this.listeners={}),(this.listeners[i]=this.listeners[i]||[]).push(e)},removeEventListener:function(i,e){if(this.listeners)if(e)for(var s=0,t=this.listeners[i],r=t&&t.length||0;r>s;s++)t[s]===e&&t.splice(s,1);else delete this.listeners[i]},fireEvent:function(e,s){var t=0,r=this._modifiers&&this._modifiers[e],n=this.listeners&&this.listeners[e],h=r&&r.length;for(s=s||{},i(s,{source:s.source||this,type:e});h>t;)r[t++].call(this,s);if(n)for(n=[].concat(n),t=0,h=n.length;h>t;)n[t++].call(this,s)},applyProperties:function(e){i(this,e)},_addEventModifier:function(i,e){this._modifiers||(this._modifiers={}),(require.is(i,"Array")?i:[i]).forEach(function(i){(this._modifiers[i]=this._modifiers[i]||[]).push(e)},this)},constants:{apiName:{get:function(){return this.declaredClass}}}}});