/** {@inheritDoc} */
    @Override
    public void onCollision(CollisionContext ctx) {
      Collection<CollisionJobContext> activeJobs = ctx.activeJobs();
      Collection<CollisionJobContext> waitJobs = ctx.waitingJobs();

      synchronized (mux) {
        colResolutionCnt++;
      }

      for (CollisionJobContext job : waitJobs) job.activate();

      for (CollisionJobContext job : activeJobs) job.cancel();
    }
    /** {@inheritDoc} */
    @Override
    public void onCollision(CollisionContext ctx) {
      Collection<CollisionJobContext> activeJobs = ctx.activeJobs();
      Collection<CollisionJobContext> waitJobs = ctx.waitingJobs();

      assert waitJobs != null;
      assert activeJobs != null;

      for (CollisionJobContext job : waitJobs) {
        assert job.getJob() != null;
        assert job.getJobContext() != null;
        assert job.getTaskSession() != null;

        assert job.getJob() instanceof GridTestJob : job.getJob();

        job.activate();
      }
    }