private void resolve(@NotNull AsyncPromise<? super TreePath> async, TreePath path) {
    if (LOG.isTraceEnabled()) LOG.debug("resolve path: ", path);
    if (path == null) {
      async.setError("path is null");
      return;
    }
    Object object = path.getLastPathComponent();
    if (object == null) {
      async.setError("path is wrong");
      return;
    }
    accept(new TreeVisitor.ByTreePath<>(path, o -> o))
      .onProcessed(result -> {
        if (result == null) {
          async.setError("path not found");
          return;
        }
        async.setResult(result);
      });
  }
private void resolve(@NotNull AsyncPromise<? super TreePath> async, TreePath path)