diff --git a/java/com/google/gerrit/server/group/InternalGroup.java b/java/com/google/gerrit/server/group/InternalGroup.java
index 639cd7a..f33adaf 100644
--- a/java/com/google/gerrit/server/group/InternalGroup.java
+++ b/java/com/google/gerrit/server/group/InternalGroup.java
@@ -27,32 +27,6 @@
 public abstract class InternalGroup implements Serializable {
   private static final long serialVersionUID = 1L;
 
-  public static InternalGroup create(
-      AccountGroup accountGroup,
-      ImmutableSet<Account.Id> members,
-      ImmutableSet<AccountGroup.UUID> subgroups) {
-    return create(accountGroup, members, subgroups, null);
-  }
-
-  public static InternalGroup create(
-      AccountGroup accountGroup,
-      ImmutableSet<Account.Id> members,
-      ImmutableSet<AccountGroup.UUID> subgroups,
-      ObjectId refState) {
-    return builder()
-        .setId(accountGroup.getId())
-        .setNameKey(accountGroup.getNameKey())
-        .setDescription(accountGroup.getDescription())
-        .setOwnerGroupUUID(accountGroup.getOwnerGroupUUID())
-        .setVisibleToAll(accountGroup.isVisibleToAll())
-        .setGroupUUID(accountGroup.getGroupUUID())
-        .setCreatedOn(accountGroup.getCreatedOn())
-        .setMembers(members)
-        .setSubgroups(subgroups)
-        .setRefState(refState)
-        .build();
-  }
-
   public abstract AccountGroup.Id getId();
 
   public String getName() {
