private @Nullable T getMappingInner(@Nullable VirtualFile file, @Nullable FilePropertyKey<T> pusherKey, boolean forHierarchy) {
    if (file instanceof VirtualFileWindow window) {
      file = window.getDelegate();
    }
    VirtualFile originalFile = ObjectUtils.doIfNotNull(file, VirtualFileUtil::originalFile);
    if (Comparing.equal(originalFile, file)) originalFile = null;

    if (file != null) {
      T pushedValue = pusherKey == null ? null : pusherKey.getPersistentValue(file);
      if (pushedValue != null) return pushedValue;
    }
    if (originalFile != null) {
      T pushedValue = pusherKey == null ? null : pusherKey.getPersistentValue(originalFile);
      if (pushedValue != null) return pushedValue;
    }
    synchronized (myMappings) {
      ensureStateLoaded();
      T t = getMappingForHierarchy(file);
      if (t != null) return t;
      t = getMappingForHierarchy(originalFile);
      if (t != null) return t;
      if (forHierarchy && file != null) return null;
      return getNotInHierarchy(originalFile != null ? originalFile : file, doGetMappings());
    }
  }
private @Nullable T getMappingInner(@Nullable VirtualFile file, @Nullable FilePropertyKey<T> pusherKey, boolean forHierarchy)