private Object[] groups(final Genotype<G> genotype) {
		final Object[] groups = new Object[_codecs.length()];

		int start = 0;
		for (int i = 0; i < _codecs.length(); ++i) {
			final int end = start + _lengths[i];
			final Genotype<G> gt = genotype.slice(start, end);

			groups[i] = _codecs.get(i).decode(gt);
			start = end;
		}

		return groups;
	}
Combines the given {@code codecs} into one codec. This lets you divide
a problem into subproblems and combine them again.

@param codecs the {@code Codec} sequence of the subproblems
@param decoder the decoder which combines the argument types from the
       given codecs, to the argument type of the resulting codec.
@throws NullPointerException if one of the arguments is {@code null}
jenetics/src/main/java/io/jenetics/engine/CompositeCodec.java