public IChromosome SelectChromosome() { Interlocked.Increment(ref selectedChromosomes); if (selectedChromosomes > expectedChromosomes) { throw new Exception($"Selected too many chromosomes. Expected {expectedChromosomes}; selected {selectedChromosomes}"); } return(innerSelectionStrategy.SelectChromosome()); }