docs: function optimizeRule( rule ) {
  		var validatorName,
  			requiredProperties,
  			i;
  
  		for ( validatorName in validators )
  			rule[ validatorName ] = validatorFunction( rule[ validatorName ] );
  
  		var nothingRequired = true;
  		for ( i in validatorsRequired ) {
  			validatorName = validatorsRequired[ i ];
  			requiredProperties = optimizeRequiredProperties( rule[ validatorName ] );
  			// Don't set anything if there are no required properties. This will allow to
  			// save some memory by GCing all empty arrays (requiredProperties).
  			if ( requiredProperties.length ) {
  				rule[ validatorName ] = requiredProperties;
  				nothingRequired = false;
  			}
  		}
  
  		rule.nothingRequired = nothingRequired;
  		rule.noProperties = !( rule.attributes || rule.classes || rule.styles );
  	}