public @Nullable Icon getIcon(@NotNull VirtualFile file) {
    String path = file.getPath();
    long stamp = file.getModificationStamp();

    Pair<Long, Icon> iconInfo = iconCache.getIfPresent(path);
    if (iconInfo != null && iconInfo.getFirst() >= stamp) {
      return iconInfo.second;
    }

    try {
      Icon icon = createOrFindBetterIcon(file, IntelliJProjectUtil.isIntelliJPlatformProject(project));
      iconInfo = new Pair<>(stamp, hasProperSize(icon) ? icon : null);
      iconCache.put(file.getPath(), iconInfo);
    }
    catch (Exception e) {
      iconInfo = null;
      iconCache.invalidate(path);
    }
    return Pair.getSecond(iconInfo);
  }
public @Nullable Icon getIcon(@NotNull VirtualFile file)