class Context {

  public static Executor currentContextExecutor(final Executor e) {
    class CurrentContextExecutor implements Executor {
      @Override
      public void execute(Runnable r) {
        e.execute(Context.current().wrap(r));
      }
    }

    return new CurrentContextExecutor();
  }

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

}