diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwners.java b/owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwners.java
index 8413704..70a1af4 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwners.java
+++ b/owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwners.java
@@ -170,7 +170,6 @@
       throws IOException {
     String[] parts = path.split("/");
     PathOwnersEntry currentEntry = rootEntry;
-    Set<Id> currentOwners = currentEntry.getOwners();
     StringBuilder builder = new StringBuilder();
 
     if (rootEntry.isInherited()) {
@@ -181,7 +180,6 @@
       }
       if (currentEntry.getOwners().isEmpty()) {
         currentEntry.setOwners(projectEntry.getOwners());
-        currentOwners = currentEntry.getOwners();
       }
       if (currentEntry.getOwnersPath() == null) {
         currentEntry.setOwnersPath(projectEntry.getOwnersPath());
@@ -201,7 +199,7 @@
       } else {
         String ownersPath = partial + "OWNERS";
         Optional<OwnersConfig> conf = getOwnersConfig(ownersPath, branch);
-        final Set<Id> owners = currentOwners;
+        final Set<Id> owners = currentEntry.getOwners();
         currentEntry =
             conf.map(c -> new PathOwnersEntry(ownersPath, c, accounts, owners))
                 .orElse(currentEntry);
diff --git a/owners-common/src/test/java/com/vmware/gerrit/owners/common/PathOwnersTest.java b/owners-common/src/test/java/com/vmware/gerrit/owners/common/PathOwnersTest.java
index cb33518..1b77177 100644
--- a/owners-common/src/test/java/com/vmware/gerrit/owners/common/PathOwnersTest.java
+++ b/owners-common/src/test/java/com/vmware/gerrit/owners/common/PathOwnersTest.java
@@ -76,6 +76,25 @@
   }
 
   @Test
+  public void testClassicWithInheritanceAndDeepNesting() throws Exception {
+    expectConfig("OWNERS", createConfig(true, owners(USER_C_EMAIL_COM)));
+    expectConfig("dir/OWNERS", createConfig(true, owners(USER_B_EMAIL_COM)));
+    expectConfig("dir/subdir/OWNERS",
+        createConfig(true, owners(USER_A_EMAIL_COM)));
+
+    creatingPatchList(Arrays.asList("dir/subdir/file.txt"));
+    replayAll();
+
+    PathOwners owners = new PathOwners(accounts, repository, branch, patchList);
+    Set<Account.Id> ownersSet = owners.get().get("dir/subdir/OWNERS");
+
+    assertEquals(3, ownersSet.size());
+    assertTrue(ownersSet.contains(USER_A_ID));
+    assertTrue(ownersSet.contains(USER_B_ID));
+    assertTrue(ownersSet.contains(USER_C_ID));
+  }
+
+  @Test
   public void testParsingYaml() {
     String yamlString = (
         "inherited: true\n" +
@@ -83,6 +102,7 @@
         "- " + USER_C_EMAIL_COM);
     Optional<OwnersConfig> config = getOwnersConfig(yamlString);
     assertTrue(config.isPresent());
+    assertTrue(config.get().isInherited());
     assertEquals(1,config.get().getOwners().size());
     assertTrue(config.get().getOwners().contains(USER_C_EMAIL_COM));
   }
