diff --git a/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/ListCommand.java b/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/ListCommand.java
index e31d9bc..30442e9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/ListCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/ratelimiter/ListCommand.java
@@ -12,8 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 package com.googlesource.gerrit.plugins.ratelimiter;
+
 import static com.google.gerrit.sshd.CommandMetaData.Mode.MASTER_OR_SLAVE;
 import static com.googlesource.gerrit.plugins.ratelimiter.Module.UPLOAD_PACK_PER_HOUR;
+
 import com.google.common.cache.LoadingCache;
 import com.google.gerrit.common.data.GlobalCapability;
 import com.google.gerrit.extensions.annotations.RequiresCapability;
@@ -27,6 +29,7 @@
 import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
+
 @AdminHighPriorityCommand
 @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
 @CommandMetaData(
@@ -39,6 +42,7 @@
       "---------------------------------------------------------------------------------------------";
   private final LoadingCache<String, RateLimiter> uploadPackPerHour;
   private final UserResolver userResolver;
+
   @Inject
   ListCommand(
       @Named(UPLOAD_PACK_PER_HOUR) LoadingCache<String, RateLimiter> uploadPackPerHour,
@@ -46,6 +50,7 @@
     this.uploadPackPerHour = uploadPackPerHour;
     this.userResolver = userResolver;
   }
+
   @Override
   protected void run() throws UnloggedFailure {
     try {
@@ -69,6 +74,7 @@
       throw die(e);
     }
   }
+
   private void printEntry(Entry<String, RateLimiter> entry) {
     stdout.println(
         String.format(
@@ -79,9 +85,11 @@
             permits(entry.getValue().usedPermits()),
             Duration.ofSeconds(entry.getValue().remainingTime(TimeUnit.SECONDS))));
   }
+
   private String permits(int value) {
     return value == Integer.MAX_VALUE ? "unlimited" : Integer.toString(value);
   }
+
   private String getDisplayValue(String key) {
     Optional<String> currentUser = userResolver.getUserName(key);
     return currentUser.map(name -> key + " (" + name + ")").orElse(key);
