docs: function(args) {
  			var result = { id: null, factory: null, dependencies: [] };
  
  			switch (args.length) {
  				// define(factory);
  				case 1:
  					result.factory = getFactory(args[0]);
  					break;
  
  				// define(id || dependencies, factory);
  				case 2:
  					if (this.isNamed(args)) {
  						assign(result, {
  							id: args[0],
  							factory: getFactory(args[1])
  						});
  					} else {
  						assign(result, {
  							dependencies: args[0],
  							factory: getFactory(args[1])
  						});
  					}
  					break;
  
  				// define(id, dependencies, factory);
  				case 3:
  					assign(result, {
  						id: args[0],
  						dependencies: args[1],
  						factory: getFactory(args[2])
  					});
  					break;
  
  				default:
  					throw new Error("Invalid `define` function signature");
  			}
  
  			// set the `isCjsWrapper` flag
  			result.isCjsWrapper =
  				n.ArrayExpression.check(result.dependencies) &&
  				result.dependencies.elements.length
  					? this.usesCjsRequireExports(result.dependencies)
  					: this.isCjsSimplifiedWrapper(result.factory);
  
  			return result;
  		}