### Question:
ExecutorServiceFlowStartScheduler implements AsyncFlowStartScheduler { @Override public synchronized void start(SchedulerOptions schedulerOptions, BrainslugContext brainslugContext, Collection<FlowDefinition> definitions) { this.schedulerOptions = schedulerOptions; this.context = brainslugContext; addFlowDefinitionsWithStartTimer(definitions); startScheduler(); }  @Override synchronized void start(SchedulerOptions schedulerOptions, BrainslugContext brainslugContext, Collection<FlowDefinition> definitions); @Override synchronized void stop(); List<TimedFlowDefinition> addFlowDefinitionsWithStartTimer(Collection<FlowDefinition> definitions); ScheduledExecutorService getScheduledExecutorService(); ExecutorServiceFlowStartScheduler withScheduledExecutorService(ScheduledExecutorService scheduledExecutorService); SchedulerOptions getSchedulerOptions(); ExecutorServiceFlowStartScheduler withSchedulerOptions(SchedulerOptions schedulerOptions); List<TimedFlowDefinition> getTimedDefinitions();  }### Answer:
@Test public void shouldStartFlows() { BrainslugContext context = getBrainslugContextWithFlows(); ExecutorServiceFlowStartScheduler flowStartScheduler = new ExecutorServiceFlowStartScheduler(); flowStartScheduler.start(new SchedulerOptions().withSchedulePeriod(1), context, context.getDefinitions()); await().until(flowWasStarted(context, IdUtil.id("withTimer"), IdUtil.id("start"), times(2))); }