protected void validateOptions() {
		for (final OptionHandle optionHandle : options) {
			for (final String reqOptionName : optionHandle.getRequires()) {
				if (quickOptionMap.get(reqOptionName) == null) {
					// required option does not exists
					final String optionName = optionHandle.getNames() == null ? "<no name>"
							: optionHandle.getNames()[0];

					throw new CmdlineParserException(null,
							I18n.marktr("The option \"{0}\" requires the unknown/missing option \"{1}\"."), optionName,
							reqOptionName);
				}
			}
			for (final String conflictOptionName : optionHandle.getConflictsWith()) {
				final String optionName = optionHandle.getNames() == null ? "<no name>" : optionHandle.getNames()[0];
				if (Arrays.asList(optionHandle.getNames()).contains(conflictOptionName)) {
					throw new CmdlineParserException(null,
							I18n.marktr("Option \"{0}\" is configured to conflicts with itself."), optionName);
				}
				if (quickOptionMap.get(conflictOptionName) == null) {
					// required option does not exists

					throw new CmdlineParserException(null,
							I18n.marktr("The option \"{0}\" conflicts with a unknown/missing option \"{1}\"."),
							optionName, conflictOptionName);

				}
			}
		}
	}