diff --git a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
index 1c59ab7..9233c54 100644
--- a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
+++ b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ForProjectWrapper.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.modules.gitrefsfilter;
 
-import static com.googlesource.gerrit.modules.gitrefsfilter.ChangeOpenCache.OPEN_CHANGES_CACHE;
+import static com.googlesource.gerrit.modules.gitrefsfilter.OpenChangesCache.OPEN_CHANGES_CACHE;
 
 import com.google.common.cache.LoadingCache;
 import com.google.common.flogger.FluentLogger;
@@ -44,7 +44,7 @@
 public class ForProjectWrapper extends ForProject {
   private static final FluentLogger logger = FluentLogger.forEnclosingClass();
 
-  private final LoadingCache<ChangeOpenCache.Key, Boolean> openChangesCache;
+  private final LoadingCache<OpenChangesCache.Key, Boolean> openChangesCache;
   private final ForProject defaultForProject;
   private final Project.NameKey project;
   private final FilterRefsConfig config;
@@ -56,7 +56,7 @@
   @Inject
   public ForProjectWrapper(
       FilterRefsConfig config,
-      @Named(OPEN_CHANGES_CACHE) LoadingCache<ChangeOpenCache.Key, Boolean> openChangesCache,
+      @Named(OPEN_CHANGES_CACHE) LoadingCache<OpenChangesCache.Key, Boolean> openChangesCache,
       @Assisted ForProject defaultForProject,
       @Assisted Project.NameKey project) {
     this.openChangesCache = openChangesCache;
@@ -122,7 +122,7 @@
   private boolean isOpen(Repository repo, Change.Id changeId, @Nullable ObjectId changeRevision) {
     try {
       return openChangesCache.get(
-          ChangeOpenCache.Key.create(repo, changeId, changeRevision, project));
+          OpenChangesCache.Key.create(repo, changeId, changeRevision, project));
     } catch (ExecutionException e) {
       logger.atWarning().withCause(e).log(
           "Error getting change '%d' from the cache. Do not hide from the advertised refs",
diff --git a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ChangeOpenCache.java b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/OpenChangesCache.java
similarity index 95%
rename from src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ChangeOpenCache.java
rename to src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/OpenChangesCache.java
index 0587524..12a6d72 100644
--- a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/ChangeOpenCache.java
+++ b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/OpenChangesCache.java
@@ -29,7 +29,7 @@
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.Repository;
 
-public class ChangeOpenCache {
+public class OpenChangesCache {
   public static final String OPEN_CHANGES_CACHE = "open_changes";
 
   public static Module module() {
@@ -60,7 +60,7 @@
         Change.Id changeId,
         @Nullable ObjectId changeRevision,
         Project.NameKey project) {
-      return new AutoValue_ChangeOpenCache_Key(repo, changeId, changeRevision, project);
+      return new AutoValue_OpenChangesCache_Key(repo, changeId, changeRevision, project);
     }
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/RefsFilterModule.java b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/RefsFilterModule.java
index 9a3f65f..963e529 100644
--- a/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/RefsFilterModule.java
+++ b/src/main/java/com/googlesource/gerrit/modules/gitrefsfilter/RefsFilterModule.java
@@ -42,6 +42,6 @@
         .to(FilterRefsCapability.class)
         .in(Scopes.SINGLETON);
 
-    install(ChangeOpenCache.module());
+    install(OpenChangesCache.module());
   }
 }
diff --git a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
index 864469a..857173a 100644
--- a/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
+++ b/src/test/java/com/googlesource/gerrit/libmodule/plugins/test/GitRefsFilterTest.java
@@ -15,7 +15,7 @@
 package com.googlesource.gerrit.libmodule.plugins.test;
 
 import static com.google.common.truth.Truth.assertThat;
-import static com.googlesource.gerrit.modules.gitrefsfilter.ChangeOpenCache.OPEN_CHANGES_CACHE;
+import static com.googlesource.gerrit.modules.gitrefsfilter.OpenChangesCache.OPEN_CHANGES_CACHE;
 
 import com.google.common.cache.LoadingCache;
 import com.google.gerrit.acceptance.GitUtil;
@@ -30,7 +30,7 @@
 import com.google.inject.Inject;
 import com.google.inject.Module;
 import com.google.inject.name.Named;
-import com.googlesource.gerrit.modules.gitrefsfilter.ChangeOpenCache;
+import com.googlesource.gerrit.modules.gitrefsfilter.OpenChangesCache;
 import com.googlesource.gerrit.modules.gitrefsfilter.RefsFilterModule;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -55,7 +55,7 @@
   @Inject private RequestScopeOperations requestScopeOperations;
 
   @Inject
-  private @Named(OPEN_CHANGES_CACHE) LoadingCache<ChangeOpenCache.Key, Boolean> changeOpenCache;
+  private @Named(OPEN_CHANGES_CACHE) LoadingCache<OpenChangesCache.Key, Boolean> changeOpenCache;
 
   @Override
   public Module createModule() {
@@ -136,7 +136,7 @@
 
     assertThat(changeOpenCache.asMap().size()).isEqualTo(1);
 
-    Map.Entry<ChangeOpenCache.Key, Boolean> cacheEntry =
+    Map.Entry<OpenChangesCache.Key, Boolean> cacheEntry =
         new ArrayList<>(changeOpenCache.asMap().entrySet()).get(0);
 
     assertThat(cacheEntry.getKey().project()).isEqualTo(project);
@@ -156,7 +156,7 @@
 
     assertThat(changeOpenCache.asMap().size()).isEqualTo(1);
 
-    Map.Entry<ChangeOpenCache.Key, Boolean> cacheEntry =
+    Map.Entry<OpenChangesCache.Key, Boolean> cacheEntry =
         new ArrayList<>(changeOpenCache.asMap().entrySet()).get(0);
 
     assertThat(cacheEntry.getKey().project()).isEqualTo(project);
