code: public CancellableContext withDeadlineAfter(long duration, TimeUnit unit,
                                                ScheduledExecutorService scheduler) {
      return withDeadline(Deadline.after(duration, unit), scheduler);
    }
docs: Create a new context which will cancel itself after the given {@code duration} from now.
  The returned context will cascade cancellation of its parent. Callers may explicitly cancel
  the returned context prior to the deadline just as for {@link #withCancellation()}. If the unit
  of work completes before the deadline, the context should be explicitly cancelled to allow
  it to be garbage collected.
  
  <p>Sample usage:
  <pre>
  Context.CancellableContext withDeadline = Context.current()
  .withDeadlineAfter(5, TimeUnit.SECONDS, scheduler);
  try {
  withDeadline.run(new Runnable() {
  public void run() {
  Context current = Context.current();
  while (!current.isCancelled()) {
  keepWorking();
  }
  }
  });
  } finally {
  withDeadline.cancel(null);
  }
  </pre>