class Context {

  public CancellableContext withDeadline(Deadline deadline,
      ScheduledExecutorService scheduler) {
    checkNotNull(deadline, "deadline");
    checkNotNull(scheduler, "scheduler");
    return new CancellableContext(this, deadline, scheduler);
  }

  private  Context(PersistentHashArrayMappedTrie<Key<?>, Object> keyValueEntries, int generation);
  private  Context(Context parent, PersistentHashArrayMappedTrie<Key<?>, Object> keyValueEntries);

}