@Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    LocalFilePath path = (LocalFilePath)o;

    if (myIsDirectory != path.myIsDirectory) {
      return false;
    }
    if (myPath.equals(path.myPath)) {
      return true;
    }
    if (!myPath.equalsIgnoreCase(path.myPath)) {
      return false;
    }
    // make sure to not query (expensive) getVirtualFile() until it's absolutely necessary, e.g. we encountered two file paths differ by case only
    VirtualFile file = getVirtualFile();
    VirtualFile oFile = path.getVirtualFile();
    if (file == null && oFile == null) return !SystemInfo.isFileSystemCaseSensitive;
    return Objects.equals(file, oFile);
  }
@Override
  public boolean equals(Object o)