@Override
		public Terminal<T> at(final Object annotation) {
			return annotation == this.annotation
				? this
				: new Terminal<>(name, value, annotation);
		}
@param name the name of the terminal symbol
@param value the value of the terminal symbol
@throws IllegalArgumentException if the given terminal {@code name}
        is empty
jenetics.ext/src/main/java/io/jenetics/ext/grammar/Cfg.java