code: public static <G extends Gene<?, G>, C extends Comparable<? super C>, T>
  	Collector<EvolutionResult<G, C>, ?, T>
  	toBestResult(final Function<Genotype<G>, T> decoder) {
  		requireNonNull(decoder);
  
  		return Collector.of(
  			MinMax::<EvolutionResult<G, C>>of,
  			MinMax::accept,
  			MinMax::combine,
  			mm -> mm.getMax() != null
  				? mm.getMax().getBestPhenotype() != null
  					? decoder.apply(mm.getMax().getBestPhenotype().getGenotype())
  					: null
  				: null
  		);
  	}
docs: Return a collector which collects the best <em>result</em> (in the native
  problem space).
  
  <pre>{@code
  final Problem<ISeq<Point>, EnumGene<Point>, Double> tsm = ...;
  final ISeq<Point> route = Engine.builder(tsm)
  .optimize(Optimize.MINIMUM).build()
  .stream()
  .limit(100)
  .collect(EvolutionResult.toBestResult(tsm.codec().decoder()));
  }</pre>
  
  If the collected {@link EvolutionStream} is empty, the collector returns
  <b>{@code null}</b>.
  
  @since 3.6
  
  @param decoder the decoder which converts the {@code Genotype} into the
  result of the problem space.
  @param <T> the <em>native</em> problem result type
  @param <G> the gene type
  @param <C> the fitness result type
  @return a collector which collects the best result of an evolution stream
  @throws NullPointerException if the given {@code decoder} is {@code null}