private static int getGeneticAdvancement(IAlleleSpecies species, Set<IAlleleSpecies> exclude, IChromosomeType speciesChromosome) { int highest = 0; exclude.add(species); for (IMutation mutation : species.getRoot().getPaths(species, speciesChromosome)) { highest = getHighestAdvancement(mutation.getAllele0(), highest, exclude, speciesChromosome); highest = getHighestAdvancement(mutation.getAllele1(), highest, exclude, speciesChromosome); } return 1 + highest; }