diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowAccountCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowAccountCommand.java
index e1e5232..5c29c2f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowAccountCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowAccountCommand.java
@@ -70,9 +70,9 @@
 
   @Inject
   ShowAccountCommand(AccountResolver ar,
-      final Provider<GetGroups> accountGetGroups,
-      final IdentifiedUser.GenericFactory userFactory,
-      final Provider<GetSshKeys> getSshKeys,
+      Provider<GetGroups> accountGetGroups,
+      IdentifiedUser.GenericFactory userFactory,
+      Provider<GetSshKeys> getSshKeys,
       SchemaFactory<ReviewDb> schema) {
     accountResolver = ar;
     this.accountGetGroups = accountGetGroups;
@@ -116,7 +116,7 @@
       stdout.println("Active:            " + account.isActive());
       stdout.println("Registered on:     " + account.getRegisteredOn());
 
-      try (final ReviewDb db = schema.open()) {
+      try (ReviewDb db = schema.open()) {
         stdout.println("");
         stdout.println("External Ids:");
         stdout.println(String
diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccessCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccessCommand.java
index 75a3e70..d3d81d5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccessCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccessCommand.java
@@ -45,7 +45,7 @@
   private boolean wide;
 
   @Inject
-  ShowRepoAccessCommand(final MetaDataUpdate.Server metaDataUpdateFactory) {
+  ShowRepoAccessCommand(MetaDataUpdate.Server metaDataUpdateFactory) {
     this.metaDataUpdateFactory = metaDataUpdateFactory;
   }
 
@@ -65,7 +65,7 @@
     if (projectName.isEmpty()) {
       throw new UnloggedFailure(1, "Please specify a project to show access for");
     }
-    final Project.NameKey nameKey = new Project.NameKey(projectName);
+    Project.NameKey nameKey = new Project.NameKey(projectName);
 
     permissionGroupWidth = wide ? Integer.MAX_VALUE : columns - 9 - 5 - 9;
 
@@ -96,7 +96,7 @@
     }
   }
 
-  private String format(final String s) {
+  private String format(String s) {
     if (s.length() < permissionGroupWidth) {
       return s;
     } else {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccountAccessCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccountAccessCommand.java
index 280a3a4..32e01e0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccountAccessCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ShowRepoAccountAccessCommand.java
@@ -59,10 +59,10 @@
 
   @Inject
   ShowRepoAccountAccessCommand(
-      final MetaDataUpdate.Server metaDataUpdateFactory,
-      final Provider<GetGroups> accountGetGroups,
+      MetaDataUpdate.Server metaDataUpdateFactory,
+      Provider<GetGroups> accountGetGroups,
       AccountResolver accountResolver,
-      final IdentifiedUser.GenericFactory userFactory) {
+      IdentifiedUser.GenericFactory userFactory) {
     this.metaDataUpdateFactory = metaDataUpdateFactory;
     this.accountGetGroups = accountGetGroups;
     this.accountResolver = accountResolver;
@@ -105,7 +105,7 @@
               + " Tip: Try double-escaping spaces, for example: \"--user Last,\\\\ First\"");
     }
 
-    final Project.NameKey nameKey = new Project.NameKey(projectName);
+    Project.NameKey nameKey = new Project.NameKey(projectName);
 
     try {
       MetaDataUpdate md = metaDataUpdateFactory.create(nameKey);
@@ -172,7 +172,7 @@
     }
   }
 
-  private String format(final String s) {
+  private String format(String s) {
     if (s.length() < permissionGroupWidth) {
       return s;
     } else {
