docs: function(proto, key, def) {
  		var desc;
  		["getter", "setter"].forEach(function(name, set) {
  			while (proto && proto[key] && !gui.Type.isDefined(def[name])) {
  				proto = Object.getPrototypeOf(proto);
  				desc = Object.getOwnPropertyDescriptor(proto, key);
  				if (desc) {
  					def[name] = desc[set ? "set" : "get"];
  				}
  			}
  		});
  		return {
  			enumerable: true,
  			configurable: true,
  			get: def.getter || this._NOGETTER,
  			set: def.setter || this._NOSETTER
  		};
  	}