protected void retainFiles(@NotNull Predicate<? super VirtualFile> c) {
    for (Map.Entry<String, T> entry : myCachedFiles.entrySet()) {
      T t = entry.getValue();
      if (t == null || !c.test(t)) {
        //CFM::entrySet returns copy
        myCachedFiles.remove(entry.getKey());
      }
    }
  }
protected void retainFiles(@NotNull Predicate<? super VirtualFile> c)