diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
index 8b66cf3..e6e298d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
@@ -53,7 +53,7 @@
   private final String canonicalWebUrl;
   private final AllProjectsName allProjectsName;
   private final PluginConfigFactory cfgFactory;
-  private Provider<CurrentUser> user;
+  private final Provider<CurrentUser> user;
 
   /**
    * Class to handle getting information from the config.
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
index df331ad..7cc7074 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -40,7 +40,6 @@
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.MergeConflictException;
 import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.util.ManualRequestContext;
 import com.google.gerrit.server.util.OneOffRequestContext;
@@ -294,7 +293,7 @@
           OrmException {
     try (ManualRequestContext ctx = oneOffRequestContext.openAs(config.getContextUserId())) {
       ReviewInput reviewInput = new ReviewInput();
-      Map<String, Short> labels = new HashMap<String, Short>();
+      Map<String, Short> labels = new HashMap<>();
       try {
         createDownstreamMerges(mdsMergeInput);
 
@@ -344,7 +343,7 @@
           InvalidQueryParameterException, OrmException {
     try (ManualRequestContext ctx = oneOffRequestContext.openAs(config.getContextUserId())) {
       // Map from branch to error message
-      Map<String, String> failedMergeBranchMap = new TreeMap<String, String>();
+      Map<String, String> failedMergeBranchMap = new TreeMap<>();
 
       List<Integer> existingDownstream;
       for (String downstreamBranch : mdsMergeInput.dsBranchMap.keySet()) {
@@ -431,7 +430,7 @@
       throws RestApiException, InvalidQueryParameterException, OrmException,
           ConfigInvalidException {
     try (ManualRequestContext ctx = oneOffRequestContext.openAs(config.getContextUserId())) {
-      List<Integer> downstreamChangeNumbers = new ArrayList<Integer>();
+      List<Integer> downstreamChangeNumbers = new ArrayList<>();
       List<ChangeInfo> changes = getChangesInTopicAndBranch(topic, downstreamBranch);
 
       for (ChangeInfo change : changes) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
index ae42611..d13a2e2 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
@@ -49,7 +49,6 @@
 import java.util.EnumSet;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
-import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
 import org.eclipse.jgit.junit.TestRepository;
 import org.eclipse.jgit.lib.Config;
