@Override
    public @NotNull Boolean get(long timeout, @NotNull TimeUnit unit) throws InterruptedException, TimeoutException {
      if (!myDone.waitForUnsafe(unit.toMillis(timeout))) {
        notifyCancelled();
        // if execution continues, just notify about timeout
        throw new TimeoutException();
      }
      boolean successfully = isTerminatedSuccessfully();
      if (!successfully) {
        debug(()-> "Javac compile session " + myId + " in process " + myProcessId + "didn't terminate successfully");
      }
      return successfully;
    }
@Override
    public @NotNull Boolean get(long timeout, @NotNull TimeUnit unit)