public void start() {
    myFuture = ApplicationManager.getApplication().executeOnPooledThread(() -> {
      try {
        setValue(construct());
        if (LOG.isDebugEnabled()) {
          LOG.debug("construct() terminated for " + this);
        }
      }
      catch (Throwable e) {
        LOG.error(e);
        onThrowable();
        throw new RuntimeException(e);
      }
      if (LOG.isDebugEnabled()) {
        LOG.debug("invoking 'finished' action for " + this);
      }
      ApplicationManager.getApplication().invokeLater(() -> finished(), myModalityState);
    });
  }
public void start()