@SuppressWarnings("unchecked")
	private <A> G gene(
		final TreeGene<A, ?> template,
		final FlatTree<? extends A, ?> tree
	) {
		return (G)template.newInstance(
			tree.value(),
			tree.childOffset(),
			tree.childCount()
		);
	}
Constructs a tree crossover with a given recombination probability.

@param probability the recombination probability
@throws IllegalArgumentException if the {@code probability} is not in the
         valid range of {@code [0, 1]}
jenetics.ext/src/main/java/io/jenetics/ext/TreeCrossover.java