@Override
  public Cancellable schedule(final long delay, final TimeUnit unit, final Runnable command) {
    final IndirectRunnable indirectRunnable = new IndirectRunnable(command);
    final Cancellable cancellable = _executor.schedule(delay, unit, indirectRunnable);
    return new IndirectCancellable(cancellable, indirectRunnable);
  }
@Test
  public void testCancel() throws InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);
    final Cancellable cancellable = _executor.schedule(100, TimeUnit.MILLISECONDS, new Runnable() {
      @Override
      public void run() {
        latch.countDown();
      }
    });

    assertTrue(cancellable.cancel(new Exception()));
    assertFalse(cancellable.cancel(new Exception()));
    assertFalse(latch.await(150, TimeUnit.MILLISECONDS));
  }