private void load(@Nullable Path path, @Nullable Path focusOn, Set<OpenFlags> flags) {
    synchronized (myLock) {
      var updatePathBar = flags.contains(OpenFlags.UPDATE_PATH_BAR);
      var updateHistory = !flags.contains(OpenFlags.KEEP_HISTORY);

      if (updatePathBar) {
        myPath.setItem(path != null ? new PathWrapper(path) : null);
      }

      myModel.setItems(new ArrayList<>());
      myList.clearSelection();
      myList.setPaintBusy(true);

      var childDir = flags.contains(OpenFlags.UPPER_LEVEL) ? myCurrentDirectory : null;
      if (!flags.contains(OpenFlags.RELOAD)) {
        myCurrentDirectory = null;
      }
      myCurrentContent.clear();
      cancelCurrentTask();
      var id = myCounter++;
      if (LOG.isTraceEnabled()) LOG.trace("starting: " + id + ", " + path);
      myCurrentTask = pair(id, execute(() -> {
        var directory = directoryToLoad(path, flags.contains(OpenFlags.INTO_ARCHIVE));
        if (directory != null) {
          var pathToSelect = focusOn != null ? focusOn :
                             childDir != null && childDir.getParent() == null && !isLocalFs(childDir) ? parent(childDir) :
                             childDir;
          loadDirectory(id, directory, pathToSelect, updatePathBar, updateHistory);
        }
        else {
          loadRoots(id, childDir, updatePathBar, updateHistory);
        }
      }));
    }
  }
private void load(@Nullable Path path, @Nullable Path focusOn, Set<OpenFlags> flags)