private static boolean isUnderRecursiveOrCircularSymlink(@NotNull VirtualFile file) {
    if (((VirtualFileSystemEntry)file).thisOrParentHaveSymlink()) {
      while (file != null && !file.is(VFileProperty.SYMLINK)) {
        file = file.getParent();
      }
      return file != null && file.isRecursiveOrCircularSymlink();
    }
    return false;
  }
private static boolean isUnderRecursiveOrCircularSymlink(@NotNull VirtualFile file)