rem: var valueKey = p.name; var changeKey = "change" + p.method;  this["retrieve" + p.method] = function() 
add: this["retrieve" + methodKey] = function() 
context: proto.addData = function(p){  if(typeof p != "object") {    throw new Error("Param should be an object!");  };  if (isInvalid(p.name)) {    throw new Error("Malformed input parameters: name needed!");  };  p.method = p.name.toFirstUp();  var valueKey = p.name;  var changeKey = "change" + p.method;  this["retrieve" + p.method] = function()  {    return this._data[valueKey];  };  if (typeof p.defaultValue != "undefined")  {    this._data[valueKey] = p.defaultValue;    this["retrieveDefault" + p.method] = function() {      return p.defaultValue;    };    this["storeDefault" + p.method] = function(newValue) {      return p.defaultValue = newValue;    };    this["restore" + p.method] = function() {      return this["store" + p.method](p.defaultValue);    };  };  this["store" + p.method] = function(newValue)  {    var fixedValue = isValid(p.type) ? p.type(newValue) : newValue;    var oldValue = this._data[valueKey];    if (fixedValue != oldValue)    {      // Store new value      this._data[valueKey] = fixedValue;      // Create Event      if (this instanceof QxTarget && this.hasEventListeners(changeKey))      {        var ce = new QxDataEvent(changeKey, fixedValue, oldValue, false);        ce.setTarget(this);        try{          this.dispatchEvent(ce, true);        }        catch(ex)        {          throw new Error("Failed to dispatch change event: " + ex);        };        ce = null;      };    };    return fixedValue;  };};
meta: 1005	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/1005/513b34703ccdc35c20114bea7e0cf250c2c5b1e4/QxObject.js/clean/qooxdoo/source/script/core/QxObject.js