code: public List<T> apply(List<T> selectedCandidates, Random rng)
      {
          List<T> population = selectedCandidates;
          for (EvolutionaryOperator<T> operator : pipeline)
          {
              population = operator.apply(population, rng);
          }
          return population;
      }
docs: Applies each operation in the pipeline in turn to the selection.
  @param selectedCandidates The candidates to subjected to evolution.
  @param rng A source of randomness used by all stochastic processes in
  the pipeline.
  @return A list of evolved candidates.