private synchronized @NotNull IdentityVirtualFilePointer getOrCreateIdentity(@NotNull String url,
                                                                               @Nullable VirtualFile found,
                                                                               boolean recursive,
                                                                               @NotNull Disposable parentDisposable,
                                                                               @Nullable VirtualFilePointerListener listener) {
    IdentityVirtualFilePointer pointer = myUrlToIdentity.get(url);
    if (pointer == null) {
      pointer = new IdentityVirtualFilePointer(found, url, myUrlToIdentity, this, listener);
      myUrlToIdentity.put(url, pointer);
      DelegatingDisposable.registerDisposable(parentDisposable, pointer);
    }
    pointer.incrementUsageCount(1);
    pointer.recursive = recursive;
    return pointer;
  }
private synchronized @NotNull IdentityVirtualFilePointer getOrCreateIdentity(@NotNull String url,
                                                                               @Nullable VirtualFile found,
                                                                               boolean recursive,
                                                                               @NotNull Disposable parentDisposable,
                                                                               @Nullable VirtualFilePointerListener listener)