docs: Path getPathForCorrespondingNode( String workspaceName,
                                        NodeKey key,
                                        Path relativePath )
          throws NoSuchWorkspaceException, AccessDeniedException, ItemNotFoundException, RepositoryException {
          assert key != null;
  
          try {
              NodeCache cache = repository.repositoryCache().getWorkspaceCache(workspaceName);
              CachedNode node = cache.getNode(key);
              if (node == null) {
                  throw new ItemNotFoundException(JcrI18n.itemNotFoundWithUuid.text(key.toString(), workspaceName));
              }
              if (relativePath != null) {
                  for (Segment segment : relativePath) {
                      ChildReference child = node.getChildReferences(cache).getChild(segment);
                      if (child == null) {
                          Path path = pathFactory().create(node.getPath(cache), segment);
                          throw new ItemNotFoundException(JcrI18n.itemNotFoundAtPath.text(path.getString(namespaces()),
                                                                                          workspaceName()));
                      }
                      CachedNode childNode = cache.getNode(child);
                      if (childNode == null) {
                          Path path = pathFactory().create(node.getPath(cache), segment);
                          throw new ItemNotFoundException(JcrI18n.itemNotFoundAtPath.text(path.getString(namespaces()),
                                                                                          workspaceName()));
                      }
                      node = childNode;
                  }
              }
              return node.getPath(cache);
          } catch (AccessControlException ace) {
              throw new AccessDeniedException(ace);
          } catch (WorkspaceNotFoundException e) {
              throw new NoSuchWorkspaceException(JcrI18n.workspaceNameIsInvalid.text(repository().repositoryName(), workspaceName));
          }
      }