docs: public Options createOptions(OptionsConfiguration optionsConfiguration)
  			throws MojoExecutionException {
  		final Options options = new Options();
  
  		options.verbose = optionsConfiguration.isVerbose();
  		options.debugMode = optionsConfiguration.isDebugMode();
  
  		options.classpaths.addAll(optionsConfiguration.getPlugins());
  
  		options.target = createSpecVersion(optionsConfiguration
  				.getSpecVersion());
  
  		final String encoding = optionsConfiguration.getEncoding();
  
  		if (encoding != null) {
  			options.encoding = createEncoding(encoding);
  		}
  
  		options.setSchemaLanguage(createLanguage(optionsConfiguration
  				.getSchemaLanguage()));
  
  		options.entityResolver = optionsConfiguration.getEntityResolver();
  
  		for (InputSource grammar : optionsConfiguration.getGrammars()) {
  			options.addGrammar(grammar);
  		}
  
  		for (InputSource bindFile : optionsConfiguration.getBindFiles()) {
  			options.addBindFile(bindFile);
  		}
  
  		// Setup Other Options
  
  		options.defaultPackage = optionsConfiguration.getGeneratePackage();
  		options.targetDir = optionsConfiguration.getGenerateDirectory();
  
  		options.strictCheck = optionsConfiguration.isStrict();
  		options.readOnly = optionsConfiguration.isReadOnly();
  		options.packageLevelAnnotations = optionsConfiguration
  				.isPackageLevelAnnotations();
  		options.noFileHeader = optionsConfiguration.isNoFileHeader();
  		options.enableIntrospection = optionsConfiguration
  				.isEnableIntrospection();
  		options.disableXmlSecurity = optionsConfiguration
  				.isDisableXmlSecurity();
  
  		if (optionsConfiguration.getAccessExternalSchema() != null) {
  			System.setProperty("javax.xml.accessExternalSchema",
  					optionsConfiguration.getAccessExternalSchema());
  		}
  		if (optionsConfiguration.getAccessExternalDTD() != null) {
  			System.setProperty("javax.xml.accessExternalDTD",
  					optionsConfiguration.getAccessExternalDTD());
  		}
  		if (optionsConfiguration.isEnableExternalEntityProcessing()) {
  			System.setProperty("enableExternalEntityProcessing", Boolean.TRUE.toString());
  		}
  		options.contentForWildcard = optionsConfiguration
  				.isContentForWildcard();
  
  		if (optionsConfiguration.isExtension()) {
  			options.compatibilityMode = Options.EXTENSION;
  		}
  
  		final List<String> arguments = optionsConfiguration.getArguments();
  		try {
  			options.parseArguments(arguments.toArray(new String[arguments
  					.size()]));
  		}
  
  		catch (BadCommandLineException bclex) {
  			throw new MojoExecutionException("Error parsing the command line ["
  					+ arguments + "]", bclex);
  		}
  
  		return options;
  	}