code: function Predef( definition ) {
  
  		// Check for best case scenario: Array.
  		// Copy the values of the array to data property.
  		if ( definition instanceof Array ) {
  			this.data = definition.slice(0);
  			return;
  		}
  
  		// If it's an object, check for the deps and dict propreties.
  		if ( definition.hasOwnProperty( 'deps' ) && definition.hasOwnProperty( 'dict' ) ){
  
  			if ( !( definition.deps instanceof Array ) || !( definition.dict instanceof Array ) ) {
  				throw new Error( 'Dict and depends property of definition must be Array' );
  			}
  			
  			this.data = {
  				deps: definition.deps.slice(0),
  				dict: definition.dict.slice(0)
  			};
  			return;
  		}
  		
  		// Not an array or valid Object
  		throw new Error( 'Predef definition must be an Array or Object with deps and dict properties' );
  	}
docs: Predef Basically a List of words that should pass JSHint as predefined globals. Data property is an Array, or an Object with `deps` and `dict` property. NOTE: A predef's data property is an Array, it can't have dependencies.