diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/CompleteProjectImport.java b/src/main/java/com/googlesource/gerrit/plugins/importer/CompleteProjectImport.java
index 2a6438d..2df913f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/CompleteProjectImport.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/CompleteProjectImport.java
@@ -80,10 +80,9 @@
     try {
       if (lockFile.lock()) {
         return lockFile;
-      } else {
-        throw new ResourceConflictException(
-            "project is being imported from another session");
       }
+      throw new ResourceConflictException(
+          "project is being imported from another session");
     } catch (IOException e) {
       throw new ResourceConflictException("failed to lock project for delete");
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/GerritApi.java b/src/main/java/com/googlesource/gerrit/plugins/importer/GerritApi.java
index 40b321b..88cddce 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/GerritApi.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/GerritApi.java
@@ -44,9 +44,8 @@
     GerritApi create(String url, String user, String pass) {
       if (url == null) {
         return localApi;
-      } else {
-        return new RemoteApi(url, user, pass);
       }
+      return new RemoteApi(url, user, pass);
     }
   }
 
@@ -121,18 +120,16 @@
             return -1;
           }
           return patch - o.patch;
-        } else {
-          if (o.minor == null) {
-            return 1;
-          }
-          if (minor == null) {
-            return -1;
-          }
-          return minor - o.minor;
         }
-      } else {
-        return major - o.major;
+        if (o.minor == null) {
+          return 1;
+        }
+        if (minor == null) {
+          return -1;
+        }
+        return minor - o.minor;
       }
+      return major - o.major;
     }
 
     @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportLog.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportLog.java
index 528a48e..597c4fc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportLog.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportLog.java
@@ -15,9 +15,7 @@
 package com.googlesource.gerrit.plugins.importer;
 
 import com.google.common.base.Throwables;
-import com.google.common.collect.HashMultimap;
 import com.google.common.collect.ListMultimap;
-import com.google.common.collect.Multimap;
 import com.google.common.collect.MultimapBuilder;
 import com.google.gerrit.audit.AuditEvent;
 import com.google.gerrit.audit.AuditService;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
index d291a2d..ea00a2d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
@@ -307,10 +307,9 @@
     try {
       if (lockFile.lock()) {
         return lockFile;
-      } else {
-        throw new ResourceConflictException(
-            "project is being imported from another session");
       }
+      throw new ResourceConflictException(
+          "project is being imported from another session");
     } catch (IOException e1) {
       throw new ResourceConflictException("failed to lock project for import");
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
index cacc18e..9386c68 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
@@ -64,10 +64,9 @@
       Repository repo = git.openRepository(name);
       if (resume) {
         return repo;
-      } else {
-        throw new ResourceConflictException(format(
-            "repository %s already exists", name.get()));
       }
+      throw new ResourceConflictException(format(
+          "repository %s already exists", name.get()));
     } catch (RepositoryNotFoundException e) {
       // Project doesn't exist
       if (resume) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayRevisionsStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayRevisionsStep.java
index 50efc97..4eafe91 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayRevisionsStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayRevisionsStep.java
@@ -108,15 +108,14 @@
           if (newCommit.equals(commit)) {
             // already replayed
             continue;
-          } else {
-            // a patch set with the same number was created both in the source
-            // and in the target system
-            log.warn(String.format(
-                "Project %s was modified in target system: "
-                    + "Skip replay revision for patch set %s.",
-                change.getProject().get(), ps.getId().toString()));
-            continue;
           }
+          // a patch set with the same number was created both in the source
+          // and in the target system
+          log.warn(String.format(
+              "Project %s was modified in target system: "
+                  + "Skip replay revision for patch set %s.",
+              change.getProject().get(), ps.getId().toString()));
+          continue;
         }
 
         patchSets.add(ps);
