code: public static Codec<int[][], IntegerGene> ofMatrix(
  		final IntRange domain,
  		final int rows,
  		final int cols
  	) {
  		requireNonNull(domain);
  		require.positive(rows);
  		require.positive(cols);
  
  		return Codec.of(
  			Genotype.of(
  				IntegerChromosome.of(domain, cols).instances()
  					.limit(rows)
  					.collect(ISeq.toISeq())
  			),
  			gt -> gt.stream()
  				.map(ch -> ch.stream()
  					.mapToInt(IntegerGene::intValue)
  					.toArray())
  				.toArray(int[][]::new)
  		);
  	}
docs: Return a 2-dimensional matrix {@code Codec} for the given range. All
  matrix values are restricted by the same domain. The dimension of the
  returned matrix is {@code int[rows][cols]}.
  
  @since 4.4
  
  @param domain the domain of the matrix values
  @param rows the number of rows of the matrix
  @param cols the number of columns of the matrix
  @return a new matrix {@code Codec}
  @throws NullPointerException if the given {@code domain} is {@code null}
  @throws IllegalArgumentException if the {@code rows} or {@code cols} are
  smaller than one.