diff --git a/src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java b/src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java
index 0821082..10ffe0f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/findowners/Action.java
@@ -130,7 +130,7 @@
       return changeData.reviewers().all().stream()
           .map(accountCache::get)
           .flatMap(Streams::stream)
-          .map(a -> a.getAccount().preferredEmail())
+          .map(a -> a.account().preferredEmail())
           .filter(Objects::nonNull)
           .collect(toList());
     } catch (StorageException e) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java b/src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java
index 53bf34d..32561e0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/findowners/Checker.java
@@ -75,7 +75,7 @@
       if (p.value() != 0 && p.label().equals("Code-Review")) {
         // Reviewers may have no preferred email, skip them if the preferred email is not set.
         Optional<String> preferredEmail =
-            accountCache.get(p.accountId()).map(a -> a.getAccount().preferredEmail());
+            accountCache.get(p.accountId()).map(a -> a.account().preferredEmail());
         if (preferredEmail.isPresent()) {
           map.put(preferredEmail.get(), Integer.valueOf(p.value()));
         }
@@ -88,7 +88,7 @@
     Optional<String> author =
         accountCache
             .get(changeData.change().getOwner())
-            .map(a -> a.getAccount().preferredEmail());
+            .map(a -> a.account().preferredEmail());
     if (author.isPresent() && (!map.containsKey(author.get()) || map.get(author.get()) == 0)) {
       map.put(author.get(), minVoteLevel);
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/findowners/OwnersDb.java b/src/main/java/com/googlesource/gerrit/plugins/findowners/OwnersDb.java
index 14869df..14f2b3b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/findowners/OwnersDb.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/findowners/OwnersDb.java
@@ -252,7 +252,7 @@
               email =
                   accountCache
                       .get(ids.iterator().next())
-                      .map(a -> a.getAccount().preferredEmail())
+                      .map(a -> a.account().preferredEmail())
                       .orElse(null);
             }
           }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/findowners/ApiIT.java b/src/test/java/com/googlesource/gerrit/plugins/findowners/ApiIT.java
index 7481b06..5be3236 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/findowners/ApiIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/findowners/ApiIT.java
@@ -174,7 +174,7 @@
       assertThat(id1).isEqualTo(id3);
       assertThat(id1).isEqualTo(id4);
       // Action.getReviewers and Checker.getVotes use accountCache to get email address.
-      Optional<Account> account = accountCache.get(id1).map(AccountState::getAccount);
+      Optional<Account> account = accountCache.get(id1).map(AccountState::account);
       assertWithMessage("account %s", id1).about(optionals()).that(account).isPresent();
       assertThat(account.get().preferredEmail()).isEqualTo(emails1[i]);
     }
