### Question:
KernelScheduler implements Scheduler<K> { @Override public TaskTracker<K> submit(Process<K> process) { return scheduler.submit(process, process.getContext()); } @Inject  KernelScheduler(WorkerPool pool); @Override ExecutorService getKernelExecutor(); @Override TaskTracker<K> submit(Process<K> process);  }### Answer:
@Test void ensureTaskOrderIsCorrect() throws ExecutionException, InterruptedException { val proc = Tasks.newProcess("test") .register( new Task("a") { @Override public TaskValue run(Scope scope) { return null; } }) .register( new Task("b0") { @Override public TaskValue run(Scope scope) { scope.set("t", "b0"); return null; } }) .register( new Task("b1") { @Override public TaskValue run(Scope scope) { scope.set("t", "b1"); return null; } }) .register( new Task("c0") { @Override public TaskValue run(Scope scope) { assertEquals(scope.get("t"), "b0"); return null; } }) .register( new Task("c1") { @Override public TaskValue run(Scope scope) { assertEquals(scope.get("t"), "b1"); return null; } }) .task("b0") .dependsOn("a") .task("b1") .dependsOn("a") .task("c1") .dependsOn("b1") .task("c0") .dependsOn("b0") .create(); scheduler.submit(proc).get(); }