private static <T> Symbol<T> select(
		final Symbol<T> symbol,
		final Collection<Symbol<T>> symbols
	) {
		for (var s : symbols) {
			if (s.equals(symbol)) {
				return s;
			}
		}
		throw new AssertionError("Symbol not found: " + symbol);
	}
Create a grammar object with the given rules.

@param rules the rules the grammar consists of
@throws IllegalArgumentException if the list of rules is empty or there
        are duplicate rules
@throws NullPointerException if the list of rules is {@code null}
jenetics.ext/src/main/java/io/jenetics/ext/grammar/Cfg.java