docs: function(target, source, loose) {
  		var hiding = this._hiding;
  		if (gui.Type.isObject(source)) {
  			Object.keys(source).forEach(function(key) {
  				if (!loose || !gui.Type.isDefined(target[key])) {
  					var desc = Object.getOwnPropertyDescriptor(source, key);
  					desc = hiding ? gui.Object._hide(desc) : desc;
  					Object.defineProperty(target, key, desc);
  				}
  			}, this);
  		} else {
  			throw new TypeError("Expected object, got " + gui.Type.of(source));
  		}
  		return target;
  	}