public static <
			A,
			G extends Gene<A, G>,
			C extends Chromosome<G>
		>
		Reader<io.jenetics.Genotype<G>>
		reader(final Reader<? extends C> chromosomeReader) {
			requireNonNull(chromosomeReader);

			return elem(v -> {
				@SuppressWarnings("unchecked")
				final List<C> chromosomes = (List<C>)v[2];
				final io.jenetics.Genotype<G> genotype =
					io.jenetics.Genotype.of(chromosomes);

				final int length = (int)v[0];
				final int ngenes = (int)v[1];
				if (length != genotype.length()) {
					throw new IllegalArgumentException(format(
						"Expected %d chromosome, but read %d.",
						length, genotype.length()
					));
				}
				if (ngenes != genotype.geneCount()) {
					throw new IllegalArgumentException(format(
						"Expected %d genes, but read %d.",
						ngenes, genotype.geneCount()
					));
				}

				return genotype;
			},
				Writers.Genotype.ROOT_NAME,
				attr(Writers.Genotype.LENGTH_NAME).map(Integer::parseInt),
				attr(Writers.Genotype.NGENES_NAME).map(Integer::parseInt),
				elems(chromosomeReader)
			);
		}
Create a genotype reader with the given chromosome reader.

@param chromosomeReader the underlying chromosome reader
@param <A> the allele type
@param <G> the gene type
@param <C> the chromosome type
@return a genotype reader with the given chromosome reader
@throws NullPointerException if the given {@code chromosomeReader} is
        {@code null}
jenetics.xml/src/main/java/io/jenetics/xml/Readers.java