public static Generation createNextGeneration(@NotNull Differ differ, @NotNull Generation previous) {
    final int parentKind = previous.reduceToSize(differ, (int)(0.2 * previous.myGensPool.size()));
    return previous.tryAgain() ? new Generation(previous, parentKind) : previous;
  }
public static Generation createNextGeneration(@NotNull Differ differ, @NotNull Generation previous)