@Override
		public NonTerminal<T> at(final Object annotation) {
			return annotation == this.annotation
				? this
				: new NonTerminal<>(name, annotation);
		}
@param name the name of the non-terminal symbol
@throws IllegalArgumentException if the given {@code name} is not
        a valid <em>non-terminal</em> name
@throws NullPointerException if one of the arguments is {@code null}
jenetics.ext/src/main/java/io/jenetics/ext/grammar/Cfg.java