class SingleThreadJTAExecutor {

  public void executeBeforeCompletion(TXState txState, Executor executor,
      CancelCriterion cancelCriterion) {
    executor.execute(() -> doOps(txState, cancelCriterion));

    beforeCompletion.execute(cancelCriterion);
  }

  public  SingleThreadJTAExecutor();
  public  SingleThreadJTAExecutor(BeforeCompletion beforeCompletion,
      AfterCompletion afterCompletion);

}