code: function () {
  		if ( ( server || ( !client.ie || client.version > 8 ) ) && typeof Object.defineProperty === "function" ) {
  			return function ( obj, prop, descriptor ) {
  				if ( !( descriptor instanceof Object ) ) {
  					throw new Error( label.error.invalidArguments );
  				}
  
  				if ( descriptor.value !== undefined && descriptor.get !== undefined ) {
  					delete descriptor.value;
  				}
  
  				Object.defineProperty( obj, prop, descriptor );
  			};
  		}
  		else {
  			return function ( obj, prop, descriptor ) {
  				if ( !( descriptor instanceof Object ) ) {
  					throw new Error( label.error.invalidArguments );
  				}
  
  				obj[prop] = descriptor.value;
  
  				return obj;
  			};
  		}
  	}
docs: Sets a property on an Object, if defineProperty cannot be used the value will be set classically
  
  @method property
  @param  {Object} obj        Object to decorate
  @param  {String} prop       Name of property to set
  @param  {Object} descriptor Descriptor of the property
  @return {Object}            Object receiving the property