@Override
  public Statement apply(final Statement base, FrameworkMethod method, Object target) {
    Callable<WorkflowTestBase> accessor =
        new Callable<WorkflowTestBase>() {

          @Override
          public WorkflowTestBase call() throws Exception {
            return WorkflowTestBase.this;
          }
        };
    workflowTestStatement =
        new WorkflowTestStatement(
            accessor, base, testTimeoutActualTimeMilliseconds, expectedException);
    workflowTestStatement.setFlowTestRunner(flowTestRunner);
    return workflowTestStatement;
  }
 public void setFlowTestRunner(boolean flowTestRunner) {
   this.flowTestRunner = flowTestRunner;
   if (workflowTestStatement != null) {
     workflowTestStatement.setFlowTestRunner(flowTestRunner);
   }
 }
 public void setExpectedException(Class<? extends Throwable> expectedException) {
   this.expectedException = expectedException;
   if (workflowTestStatement != null) {
     workflowTestStatement.setExpectedException(expectedException);
   }
 }
 /**
  * Test timeout time. Uses real clock that ignores acceleration (see {@link
  * #setClockAccelerationCoefficient(double)}). Instead of calling this method consider using
  * {@link FlowBlockJUnit4ClassRunner} or {@link FlowSpringJUnit4ClassRunner} and timeout parameter
  * of @Test annotation.
  *
  * @param timeout time in milliseconds.
  */
 public void setTestTimeoutActualTimeMilliseconds(long timeout) {
   this.testTimeoutActualTimeMilliseconds = timeout;
   if (workflowTestStatement != null) {
     workflowTestStatement.setTestTimeoutActualTimeMilliseconds(timeout);
   }
 }