docs: function extractRequired( required, all ) {
  		var unbang = [],
  			empty = true,
  			i;
  
  		if ( required )
  			empty = false;
  		else
  			required = {};
  
  		for ( i in all ) {
  			if ( i.charAt( 0 ) == '!' ) {
  				i = i.slice( 1 );
  				unbang.push( i );
  				required[ i ] = true;
  				empty = false;
  			}
  		}
  
  		while ( ( i = unbang.pop() ) ) {
  			all[ i ] = all[ '!' + i ];
  			delete all[ '!' + i ];
  		}
  
  		return empty ? false : required;
  	}