class PlanExecutor implements JobResultReceiver, Cancelable, DependencyGraphExecutionFuture {

  @Override
  public synchronized String get() throws InterruptedException, ExecutionException {
    while (_executing != null) {
      s_logger.debug("Waiting for completion of {}", this);
      wait();
    }
    if (_state == State.CANCELLED) {
      s_logger.info("Cancelled {}", this);
      throw new CancellationException();
    }
    return getGraph().getCalculationConfiguration();
  }

  public  PlanExecutor(final SingleComputationCycle cycle, final GraphExecutionPlan plan);

}