public virtual Task Mutate(List <TIndividual> newIndividuals) { for (var i = 0; i < newIndividuals.Count; i++) { Crossover.Mutate(i, newIndividuals[i]); foreach (var adjuster in ParameterAdjusters) { adjuster.Mutate(i, newIndividuals[i]); } foreach (var t in Mutations) { t.Mutate(i, newIndividuals[i]); } } return(Task.CompletedTask); }