code: static <T extends Gene<?, T>, C extends Comparable<? super C>>
  	CompositeAlterer<T, C> join(
  		final Alterer<T, C> a1,
  		final Alterer<T, C> a2
  	) {
  		return CompositeAlterer.of(a1, a2);
  	}
docs: Joins the given alterer and returns a new CompositeAlterer object. If one
  of the given alterers is a CompositeAlterer the sub alterers of it are
  unpacked and appended to the newly created CompositeAlterer.
  
  @param <T> the gene type of the alterers.
  
  @param <C> the fitness function result type
  @param a1 the first alterer.
  @param a2 the second alterer.
  @return a new CompositeAlterer object.
  @throws NullPointerException if one of the given alterer is {@code null}.