diff --git a/src/main/java/com/gerritforge/gerrit/modules/virtualhost/ForHiddenProject.java b/src/main/java/com/gerritforge/gerrit/modules/virtualhost/ForHiddenProject.java
index 4e17e69..5fa42c2 100644
--- a/src/main/java/com/gerritforge/gerrit/modules/virtualhost/ForHiddenProject.java
+++ b/src/main/java/com/gerritforge/gerrit/modules/virtualhost/ForHiddenProject.java
@@ -25,7 +25,7 @@
 import com.google.gerrit.server.permissions.PermissionBackend.ForRef;
 import com.google.gerrit.server.permissions.PermissionBackend.RefFilterOptions;
 import com.google.gerrit.server.permissions.PermissionBackendException;
-import com.google.gerrit.server.permissions.RefPermissionOrLabel;
+import com.google.gerrit.server.permissions.RefPermission;
 import com.google.gerrit.server.query.change.ChangeData;
 import java.util.Collection;
 import java.util.Collections;
@@ -56,14 +56,19 @@
     }
 
     @Override
-    public void check(RefPermissionOrLabel perm) throws AuthException, PermissionBackendException {
+    public ForChange changeToBeCreated(boolean isOwner) {
+      return forChange;
+    }
+
+    @Override
+    public void check(RefPermission perm) throws AuthException, PermissionBackendException {
       throwDenied();
     }
 
     @Override
-    public <T extends RefPermissionOrLabel> Set<T> test(Collection<T> permSet)
+    public Set<RefPermission> test(Collection<RefPermission> permSet)
         throws PermissionBackendException {
-      return Collections.emptySet();
+      return Set.of();
     }
 
     @Override
@@ -72,7 +77,7 @@
     }
 
     @Override
-    public BooleanCondition testCond(RefPermissionOrLabel perm) {
+    public BooleanCondition testCond(RefPermission perm) {
       return BooleanCondition.FALSE;
     }
   }
