@Override
	public boolean equals(final Object obj) {
		return obj == this ||
			obj instanceof Program<?> other &&
			Objects.equals(other._name, _name) &&
			Objects.equals(other._tree, _tree);
	}
Convenient method, which lets you apply the program function without
explicitly create a wrapper array.

@see #apply(Object[])

@param args the function arguments
@return the evaluated value
@throws NullPointerException if the given variable array is {@code null}
@throws IllegalArgumentException if the length of the argument array
        is smaller than the program arity
jenetics.prog/src/main/java/io/jenetics/prog/op/Program.java