@Override
    public boolean before(@NotNull VirtualFile child) {
      String targetPath = ContainerUtil.getLastItem(myPathsStack);
      if (targetPath == null) return false;
      if (myIncludeChildren && targetPath.isEmpty()) {
        myPathsStack.add("");
        return true;
      }

      String childName = getNameOrUrlPart(child);
      if (!targetPath.startsWith(childName)) return false;
      String targetPathRest = targetPath.substring(childName.length());
      if (!targetPathRest.isEmpty() && targetPathRest.charAt(0) != '/') return false;
      if (!targetPathRest.isEmpty() && targetPathRest.charAt(0) == '/') {
        targetPathRest = targetPathRest.substring(1);
      }

      myPathsStack.add(targetPathRest);
      return true;
    }
@Override
    public boolean before(@NotNull VirtualFile child)