Gens (@NotNull Gens p1, @NotNull Gens p2, int averageMutationCount) { final int size = p1.myValues.size(); assert size == p2.myValues.size(); // Crossover! final int crossover = size / 2;//FUtils.getRandomLess(size - 6) + 3; final List<Value> values = new ArrayList<>(size); for (int i = 0; i < size; ++i) { final Value value1 = p1.myValues.get(i); final Value value2 = p2.myValues.get(i); if (value1.kind == Value.VAR_KIND.INDENT) { values.add(new Value(value1)); } else if (value1.kind == Value.VAR_KIND.BRACE_STYLE) { values.add(new Value(value2)); } else if ((i & 0x1) == 1) { values.add(new Value(value1)); } else { values.add(new Value(value2)); } } return new Gens(values).mutate(averageMutationCount); }