public static <T extends ScanTask> List<ScanTaskGroup<T>> planTaskGroups(
      List<T> tasks, long splitSize, int lookback, long openFileCost) {
    return Lists.newArrayList(
        planTaskGroups(CloseableIterable.withNoopClose(tasks), splitSize, lookback, openFileCost));
  }
@Test
  public void testTaskGroupPlanning() {
    List<ParentTask> tasks =
        ImmutableList.of(
            new ChildTask1(64),
            new ChildTask1(32),
            new ChildTask3(64),
            new ChildTask3(32),
            new ChildTask2(128),
            new ChildTask3(32),
            new ChildTask3(32));

    CloseableIterable<ScanTaskGroup<ParentTask>> taskGroups =
        TableScanUtil.planTaskGroups(CloseableIterable.withNoopClose(tasks), 128, 10, 4);
    assertThat(taskGroups).as("Must have 3 task groups").hasSize(3);
  }