class ParserConfiguration {

	public ParserConfiguration registerDirective(String name, DirectiveHandler<KnowledgeBase> handler)
			throws IllegalArgumentException {
		Validate.isTrue(!RESERVED_DIRECTIVE_NAMES.contains(name), "The name \"%s\" is a reserved directive name.",
				name);
		Validate.isTrue(!this.directives.containsKey(name), "The directive \"%s\" is already registered.", name);

		this.directives.put(name, handler);
		return this;
	}

	public  ParserConfiguration();
	public  ParserConfiguration(ParserConfiguration other);

}