Gens (int averageMutationCount) { if (averageMutationCount > 0) { // with mutation int commonMutagen = myValues.stream().mapToInt(Value::getMutagenFactor).sum(); for (Value value : myValues) { if (Utils.getRandomLess(commonMutagen) < value.getMutagenFactor() * averageMutationCount) { final Object[] possibleValues = value.getPossibleValues(); value.value = possibleValues[Utils.getRandomLess(possibleValues.length)]; } } } return this; }