diff --git a/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimiter.java b/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimiter.java
index 81280ba..7c695de 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimiter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimiter.java
@@ -18,12 +18,10 @@
 import java.util.concurrent.TimeUnit;
 
 interface RateLimiter extends Comparable<RateLimiter> {
-  Comparator<RateLimiter> REVERSE_ORDER_COMPARATOR =
-      Comparator.comparing(RateLimiter::availablePermits).reversed();
 
   @Override
   public default int compareTo(RateLimiter other) {
-    return REVERSE_ORDER_COMPARATOR.compare(this, other);
+    return Comparator.comparing(RateLimiter::availablePermits).reversed().compare(this, other);
   }
 
   /** Returns number of permits allowed per hour. */
diff --git a/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/ConfigurationTest.java b/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/ConfigurationTest.java
index 9d072a1..78ef8dc 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/ConfigurationTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/ConfigurationTest.java
@@ -38,13 +38,14 @@
   private static final String PLUGIN_NAME = "rate-limiter";
 
   @Rule public ExpectedException exception = ExpectedException.none();
+
   @Mock private PluginConfigFactory pluginConfigFactoryMock;
   @Mock private GroupsCollection groupsCollectionMock;
   @Mock private GroupDescription.Basic administratorsGroupDescMock;
   @Mock private GroupDescription.Basic someGroupDescMock;
+
   private Config globalPluginConfig;
   private final int validRate = 123;
-  private final String invalidType = "dummyType";
   private final String groupTagName = "group";
 
   @Before
@@ -100,6 +101,8 @@
 
   @Test
   public void testInvalidRateLimitValue() {
+    String invalidType = "dummyType";
+
     globalPluginConfig.setString(
         groupTagName,
         someGroupDescMock.getName(),
@@ -116,8 +119,8 @@
 
   @Test
   public void testInvalidGroup() {
-
     // Set a good group and a bad and ensure the good is still parsed
+
     globalPluginConfig.setInt(
         groupTagName,
         someGroupDescMock.getName(),
diff --git a/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimitUploadPackIT.java b/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimitUploadPackIT.java
index 7724d9e..f421748 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimitUploadPackIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/ratelimiter/RateLimitUploadPackIT.java
@@ -35,7 +35,7 @@
   public void setUp() throws Exception {
     // Create the group before the plugin is loaded since limits per group are
     // resolved at plugin load time.
-    addUserToNewGroup("user", "limitGroup");
+    addUserToNewGroup();
     super.setUp();
   }
 
@@ -60,15 +60,16 @@
     cloneProject(new Project.NameKey(projectB), user);
   }
 
-  void addUserToNewGroup(String user, String groupName) throws RestApiException {
+  private void addUserToNewGroup() throws RestApiException {
     GroupInput in = new GroupInput();
+    String groupName = "limitGroup";
     in.name = groupName;
     in.ownerId = "Administrators";
     gApi.groups().create(in);
-    gApi.groups().id(groupName).addMembers(user);
+    gApi.groups().id(groupName).addMembers(user.username);
   }
 
-  void createProjectWithChange(String projectName) throws RestApiException {
+  private void createProjectWithChange(String projectName) throws RestApiException {
     ProjectInput input = new ProjectInput();
     input.name = projectName;
     input.createEmptyCommit = true;
