docs: function defineProperties(target, options/*, source, ...*/)
  	{
  		if (options == null)
  			options = {};
  
  		var i = 2,
  			max = arguments.length,
  			source, prop;
  
  		for (; i < max; ++i)
  		{
  			source = arguments[i];
  			if (!(source instanceof Object))
  				continue;
  
  			for (prop in source)
  			{
  				if (source[prop] == null)
  					continue;
  
  				defineProperty(target, prop, {
  					value: source[prop],
  					enumerable: options.enumerable == null ? true : !!options.enumerable,
  					writable: options.writable == null ? true : !!options.writable,
  					configurable: options.configurable == null ? true : !!options.configurable
  				});
  			}
  		}
  
  		return target;
  	}