@JsonIgnore
  public boolean isForeachIterationRestartable(long iterationId) {
    if (restartInfo != null && restartInfo.contains(iterationId)) {
      return false;
    }
    if (details == null) {
      return false;
    }
    return details.isForeachIterationRestartable(iterationId);
  }
@Test
  public void testisForeachIterationRestartable() throws Exception {
    ForeachStepOverview overview =
        loadObject(
            "fixtures/instances/sample-foreach-step-overview.json", ForeachStepOverview.class);
    assertFalse(overview.isForeachIterationRestartable(123L));
    overview.addOne(123L, WorkflowInstance.Status.FAILED, null);
    overview.refreshDetail();
    assertTrue(overview.isForeachIterationRestartable(123L));
    assertEquals(0, overview.getRunningStatsCount(true));
    overview.updateForRestart(
        123L, WorkflowInstance.Status.CREATED, WorkflowInstance.Status.FAILED, null);
    overview.refreshDetail();
    assertFalse(overview.isForeachIterationRestartable(123L));
    assertEquals(79993, overview.getRunningStatsCount(true));
  }