code: public static <A> ProgramChromosome<A> of(
  		final Tree<? extends Op<A>, ?> program,
  		final ISeq<? extends Op<A>> operations,
  		final ISeq<? extends Op<A>> terminals
  	) {
  		return of(
  			program,
  			(Predicate<? super ProgramChromosome<A>> & Serializable)ProgramChromosome::isSuperValid,
  			operations,
  			terminals
  		);
  	}
docs: Create a new chromosome from the given operation tree (program).
  
  @param program the operation tree
  @param operations the allowed non-terminal operations
  @param terminals the allowed terminal operations
  @param <A> the operation type
  @return a new chromosome from the given operation tree
  @throws NullPointerException if one of the given arguments is {@code null}
  @throws IllegalArgumentException if the given operation tree is invalid,
  which means there is at least one node where the operation arity
  and the node child count differ.