minor improvements, cleanup, nullability-issues, ...
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/AccessControlEntry.java b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/AccessControlEntry.java
index 984e7f3..e1a8472 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/AccessControlEntry.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/AccessControlEntry.java
@@ -18,7 +18,6 @@
 
 import org.apache.sling.feature.cpconverter.shared.RepoPath;
 import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
 
 import java.util.LinkedList;
 import java.util.List;
@@ -49,8 +48,8 @@
         this.isPrincipalBased = isPrincipalBased;
     }
 
-    public void addRestriction(@Nullable String restriction) {
-        if (restriction != null && !restriction.isEmpty()) {
+    public void addRestriction(@NotNull String restriction) {
+        if (!restriction.isEmpty()) {
             restrictions.add(restriction);
         }
     }
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManager.java b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManager.java
index 0aa5eae..8ca506d 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManager.java
@@ -34,11 +34,11 @@
 
     boolean addSystemUser(@NotNull SystemUser systemUser);
 
-    boolean addAcl(String systemUser, AccessControlEntry acl);
+    boolean addAcl(@NotNull String systemUser, @NotNull AccessControlEntry acl);
 
-    void addRepoinitExtension(List<VaultPackageAssembler> packageAssemblers, FeaturesManager featureManager);
+    void addRepoinitExtension(@NotNull List<VaultPackageAssembler> packageAssemblers, @NotNull FeaturesManager featureManager);
 
-    void addNodetypeRegistrationSentence(String nodetypeRegistrationSentence);
+    void addNodetypeRegistrationSentence(@NotNull String nodetypeRegistrationSentence);
 
     void addPrivilegeDefinitions(@NotNull PrivilegeDefinitions privilegeDefinitions);
 
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
index 728343b..f79c6d5 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
@@ -72,20 +72,22 @@
         this.supportedPrincipalBasedPath = (supportedPrincipalBasedPath == null) ? null : new RepoPath(supportedPrincipalBasedPath);
     }
 
-
     @Override
     public boolean addUser(@NotNull User user) {
         return users.add(user);
     }
 
+    @Override
     public boolean addGroup(@NotNull Group group) {
         return groups.add(group);
     }
 
+    @Override
     public boolean addSystemUser(@NotNull SystemUser systemUser) {
         return systemUsers.add(systemUser);
     }
 
+    @Override
     public boolean addAcl(@NotNull String systemUser, @NotNull AccessControlEntry acl) {
         if (getSystemUser(systemUser).isPresent()) {
             acls.computeIfAbsent(systemUser, k -> new LinkedList<>()).add(acl);
@@ -94,6 +96,7 @@
         return false;
     }
 
+    @Override
     public void addRepoinitExtension(@NotNull List<VaultPackageAssembler> packageAssemblers, @NotNull FeaturesManager featureManager) {
         try (Formatter formatter = new Formatter()) {
 
@@ -105,52 +108,8 @@
                 formatter.format("%s%n", nodetypeRegistrationSentence);
             }
 
-            // system users
-
-            for (SystemUser systemUser : systemUsers) {
-                // make sure all users are created first
-                formatter.format("create service user %s with path %s%n", systemUser.getId(), calculateIntermediatePath(systemUser.getIntermediatePath()));
-                if (aclIsBelow(systemUser.getPath())) {
-                    throw new IllegalStateException("Detected policy on subpath of system-user: " + systemUser);
-                }
-            }
-
-            for (Group group : groups) {
-                if (aclStartsWith(group.getPath())) {
-                    formatter.format("create group %s with path %s%n", group.getId(), group.getIntermediatePath());
-                }
-                if (aclIsBelow(group.getPath())) {
-                    throw new IllegalStateException("Detected policy on subpath of group: " + group);
-                }
-            }
-
-            for (User user : users) {
-                if (aclStartsWith(user.getPath())) {
-                    throw new IllegalStateException("Detected policy on user: " + user);
-                }
-            }
-
-            if (!enforcePrincipalBased) {
-                Set<RepoPath> paths = acls.entrySet().stream()
-                        .filter(entry -> getSystemUser(entry.getKey()).isPresent())
-                        .map(Entry::getValue)
-                        .flatMap(Collection::stream)
-                        // paths only should/need to be create with resource-based access control
-                        .filter(((Predicate<AccessControlEntry>) AccessControlEntry::isPrincipalBased).negate())
-                        .map(AccessControlEntry::getRepositoryPath)
-                        .collect(Collectors.toSet());
-
-                paths.stream()
-                        .filter(path -> paths.stream().noneMatch(other -> !other.equals(path) && other.startsWith(path)))
-                        .filter(((Predicate<RepoPath>)RepoPath::isRepositoryPath).negate())
-                        .filter(path -> Stream.of(systemUsers, users, groups).flatMap(Collection::stream)
-                                .noneMatch(user -> user.getPath().startsWith(path)))
-                        .map(path -> computePathWithTypes(path, packageAssemblers))
-                        .filter(Objects::nonNull)
-                        .forEach(
-                                path -> formatter.format("create path %s%n", path)
-                        );
-            }
+            addUsersAndGroups(formatter);
+            addPaths(formatter, packageAssemblers);
 
             // add the acls
             acls.forEach((systemUserID, authorizations) ->
@@ -166,6 +125,31 @@
         }
     }
 
+    private void addUsersAndGroups(@NotNull Formatter formatter) {
+        for (SystemUser systemUser : systemUsers) {
+            // make sure all system users are created first
+            formatter.format("create service user %s with path %s%n", systemUser.getId(), calculateIntermediatePath(systemUser.getIntermediatePath()));
+            if (aclIsBelow(systemUser.getPath())) {
+                throw new IllegalStateException("Detected policy on subpath of system-user: " + systemUser);
+            }
+        }
+
+        for (Group group : groups) {
+            if (aclStartsWith(group.getPath())) {
+                formatter.format("create group %s with path %s%n", group.getId(), group.getIntermediatePath());
+            }
+            if (aclIsBelow(group.getPath())) {
+                throw new IllegalStateException("Detected policy on subpath of group: " + group);
+            }
+        }
+
+        for (User user : users) {
+            if (aclStartsWith(user.getPath())) {
+                throw new IllegalStateException("Detected policy on user: " + user);
+            }
+        }
+    }
+
     @NotNull
     private String calculateIntermediatePath(@NotNull RepoPath intermediatePath) {
         if (enforcePrincipalBased && supportedPrincipalBasedPath != null && !intermediatePath.startsWith(supportedPrincipalBasedPath)) {
@@ -183,6 +167,30 @@
         }
     }
 
+    private void addPaths(@NotNull Formatter formatter, @NotNull List<VaultPackageAssembler> packageAssemblers) {
+        if (!enforcePrincipalBased) {
+            Set<RepoPath> paths = acls.entrySet().stream()
+                    .filter(entry -> getSystemUser(entry.getKey()).isPresent())
+                    .map(Entry::getValue)
+                    .flatMap(Collection::stream)
+                    // paths only should/need to be create with resource-based access control
+                    .filter(((Predicate<AccessControlEntry>) AccessControlEntry::isPrincipalBased).negate())
+                    .map(AccessControlEntry::getRepositoryPath)
+                    .collect(Collectors.toSet());
+
+            paths.stream()
+                    .filter(path -> paths.stream().noneMatch(other -> !other.equals(path) && other.startsWith(path)))
+                    .filter(((Predicate<RepoPath>)RepoPath::isRepositoryPath).negate())
+                    .filter(path -> Stream.of(systemUsers, users, groups).flatMap(Collection::stream)
+                            .noneMatch(user -> user.getPath().startsWith(path)))
+                    .map(path -> computePathWithTypes(path, packageAssemblers))
+                    .filter(Objects::nonNull)
+                    .forEach(
+                            path -> formatter.format("create path %s%n", path)
+                    );
+        }
+    }
+
     private boolean aclStartsWith(@NotNull RepoPath path) {
         return acls.values().stream().flatMap(List::stream).anyMatch(acl -> acl.getRepositoryPath().startsWith(path));
     }
@@ -194,10 +202,6 @@
     private void addStatements(@NotNull SystemUser systemUser,
                                @NotNull List<AccessControlEntry> authorizations,
                                @NotNull Formatter formatter) {
-        if (authorizations.isEmpty()) {
-            return;
-        }
-
         Map<AccessControlEntry, String> resourceEntries = new LinkedHashMap<>();
         Map<AccessControlEntry, String> principalEntries = new LinkedHashMap<>();
 
@@ -241,10 +245,8 @@
     }
 
     @Override
-    public void addNodetypeRegistrationSentence(@Nullable String nodetypeRegistrationSentence) {
-        if (nodetypeRegistrationSentence != null) {
-            nodetypeRegistrationSentences.add(nodetypeRegistrationSentence);
-        }
+    public void addNodetypeRegistrationSentence(@NotNull String nodetypeRegistrationSentence) {
+        nodetypeRegistrationSentences.add(nodetypeRegistrationSentence);
     }
 
     @Override
@@ -252,6 +254,7 @@
         this.privilegeDefinitions = privilegeDefinitions;
     }
 
+    @Override
     public void reset() {
         systemUsers.clear();
         acls.clear();
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/MixinParser.java b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/MixinParser.java
index b447493..236e401 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/MixinParser.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/MixinParser.java
@@ -19,7 +19,6 @@
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.sling.feature.cpconverter.shared.AbstractJcrNodeParser;
 import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
 
 final class MixinParser extends AbstractJcrNodeParser<String> {
     private String mixins;
@@ -34,8 +33,7 @@
     }
 
     @Override
-    protected void onJcrRootElement(String uri, String localName, String qName, Attributes attributes)
-            throws SAXException {
+    protected void onJcrRootElement(String uri, String localName, String qName, Attributes attributes) {
         // not needed
     }
 
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/PrimaryTypeParser.java b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/PrimaryTypeParser.java
index ffed8fc..49799aa 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/PrimaryTypeParser.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/PrimaryTypeParser.java
@@ -18,7 +18,6 @@
 
 import org.apache.sling.feature.cpconverter.shared.AbstractJcrNodeParser;
 import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
 
 final class PrimaryTypeParser extends AbstractJcrNodeParser<String> {
 
@@ -27,14 +26,12 @@
     }
 
     @Override
-    protected void onJcrRootNode(String uri, String localName, String qName, Attributes attributes, String primaryType)
-            throws SAXException {
+    protected void onJcrRootNode(String uri, String localName, String qName, Attributes attributes, String primaryType) {
         detectedPrimaryType = primaryType;
     }
 
     @Override
-    protected void onJcrRootElement(String uri, String localName, String qName, Attributes attributes)
-            throws SAXException {
+    protected void onJcrRootElement(String uri, String localName, String qName, Attributes attributes) {
         // not needed
     }
 
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandler.java
index 13a8fa0..404d111 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandler.java
@@ -16,8 +16,16 @@
  */
 package org.apache.sling.feature.cpconverter.handlers;
 
-import static java.util.Objects.requireNonNull;
-import static org.apache.jackrabbit.vault.packaging.PackageProperties.NAME_VERSION;
+import org.apache.felix.utils.manifest.Clause;
+import org.apache.felix.utils.manifest.Parser;
+import org.apache.jackrabbit.vault.fs.io.Archive;
+import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
+import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
+import org.apache.sling.feature.cpconverter.artifacts.InputStreamArtifactWriter;
+import org.codehaus.plexus.util.StringUtils;
+import org.jetbrains.annotations.NotNull;
+import org.osgi.framework.Constants;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -29,18 +37,8 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.felix.utils.manifest.Clause;
-import org.apache.felix.utils.manifest.Parser;
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-import org.apache.sling.feature.cpconverter.artifacts.InputStreamArtifactWriter;
-import org.codehaus.plexus.util.StringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.osgi.framework.Constants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import static java.util.Objects.requireNonNull;
+import static org.apache.jackrabbit.vault.packaging.PackageProperties.NAME_VERSION;
 
 public final class BundleEntryHandler extends AbstractRegexEntryHandler {
 
@@ -58,8 +56,6 @@
 
     private static final String JAR_TYPE = "jar";
 
-    private final Logger logger = LoggerFactory.getLogger(getClass());
-
     private final Pattern pomPropertiesPattern = Pattern.compile("META-INF/maven/[^/]+/[^/]+/pom.properties");
 
     public BundleEntryHandler() {
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/DefaultEntryHandlersManager.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/DefaultEntryHandlersManager.java
index 9c20896..30bb854 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/DefaultEntryHandlersManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/DefaultEntryHandlersManager.java
@@ -36,9 +36,7 @@
 
     @Override
     public void addEntryHandler(@NotNull EntryHandler handler) {
-        if (handler != null) {
-            entryHandlers.add(handler);
-        }
+        entryHandlers.add(handler);
     }
 
     @Override
@@ -48,7 +46,6 @@
                 return entryHandler;
             }
         }
-
         return null;
     }
 
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/shared/AbstractJcrNodeParser.java b/src/main/java/org/apache/sling/feature/cpconverter/shared/AbstractJcrNodeParser.java
index c265f5f..54d4d60 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/shared/AbstractJcrNodeParser.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/shared/AbstractJcrNodeParser.java
@@ -58,14 +58,14 @@
         }
     }
 
-    protected void onJcrRootNode(String uri, String localName, String qName, Attributes attributes, String primaryType) throws SAXException {
+    protected void onJcrRootNode(String uri, String localName, String qName, Attributes attributes, String primaryType) {
         if (this.primaryTypes.contains(primaryType)) {
             detectedPrimaryType = primaryType;
             onJcrRootElement(uri, localName, qName, attributes);
         }
     }
 
-    protected abstract void onJcrRootElement(String uri, String localName, String qName, Attributes attributes) throws SAXException;
+    protected abstract void onJcrRootElement(String uri, String localName, String qName, Attributes attributes);
 
     protected abstract O getParsingResult();
 }
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/RecollectorVaultPackageScanner.java b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/RecollectorVaultPackageScanner.java
index ec25f3a..b8eff4d 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/RecollectorVaultPackageScanner.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/RecollectorVaultPackageScanner.java
@@ -47,7 +47,7 @@
     }
 
     @Override
-    protected void onFile(String path, Archive archive, Entry entry) throws Exception {
+    protected void onFile(@NotNull String path, @NotNull Archive archive, @NotNull Entry entry) throws Exception {
         for (EntryHandler handler : handlers) {
             if (handler.matches(path)) {
                 handler.handle(path, archive, entry, converter);
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManagerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManagerTest.java
index 52b66fa..8e74167 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManagerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManagerTest.java
@@ -37,11 +37,14 @@
 import java.io.StringReader;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -83,7 +86,7 @@
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
@@ -125,7 +128,7 @@
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
@@ -147,7 +150,7 @@
     }
 
     @Test
-    public void testAddACLforUnknownUser() throws RepoInitParsingException {
+    public void testAddACLforUnknownUser() {
         // we expect this acl to not show up because the user is unknown
         aclManager.addAcl("acs-commons-on-deploy-scripts-service", newAcl(true, "jcr:read,crx:replicate,jcr:removeNode", "/home/users/system"));
 
@@ -158,7 +161,7 @@
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
@@ -177,7 +180,7 @@
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
@@ -210,7 +213,7 @@
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
@@ -240,7 +243,7 @@
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
@@ -268,7 +271,7 @@
 
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
     }
 
     @Test(expected = IllegalStateException.class)
@@ -283,7 +286,7 @@
 
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
     }
 
     @Test
@@ -299,7 +302,7 @@
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
@@ -327,7 +330,7 @@
         FeaturesManager fm = Mockito.spy(new DefaultFeaturesManager(tempDir.toFile()));
         when(fm.getTargetFeature()).thenReturn(feature);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/EnforcePrincipalBasedTest.java b/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/EnforcePrincipalBasedTest.java
index 51d9884..33c390f 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/EnforcePrincipalBasedTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/EnforcePrincipalBasedTest.java
@@ -38,13 +38,14 @@
 import java.io.StringReader;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -92,8 +93,21 @@
         RepoPath accessControlledPath = new RepoPath("/content/feature");
         aclManager.addAcl(systemUser.getId(), new AccessControlEntry(true, "jcr:read", accessControlledPath , false));
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
+    }
 
+    @Test
+    public void testMissingSupportedPath() {
+        AclManager aclManager = new DefaultAclManager(true, null);
+        aclManager.addSystemUser(systemUser);
+
+        RepoPath accessControlledPath = new RepoPath("/content/feature");
+        aclManager.addAcl(systemUser.getId(), new AccessControlEntry(true, "jcr:read", accessControlledPath , false));
+
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
+        String txt = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT).getText();
+        assertFalse(txt.contains("create service user user1 with path /home/users/system/some/subtree/intermediate"));
+        assertTrue(txt.contains("create service user user1 with path " + systemUser.getIntermediatePath()));
     }
 
     @Test
@@ -109,13 +123,13 @@
         RepoPath accessControlledPath = new RepoPath("/content/feature");
         aclManager.addAcl(systemUser.getId(), new AccessControlEntry(true, "jcr:read", accessControlledPath , false));
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
 
         String expected =
-                "create service user user1 with path /home/users/system/intermediate" + System.lineSeparator() +
+                "create service user user1 with path " + systemUser.getIntermediatePath() + System.lineSeparator() +
                 "create path /content/feature(sling:Folder)" + System.lineSeparator() +
                 "set ACL for user1" + System.lineSeparator() +
                 "allow jcr:read on /content/feature" + System.lineSeparator() +
@@ -134,7 +148,7 @@
         accessControlledPath = new RepoPath("/content/feature");
         aclManager.addAcl(systemUser.getId(), new AccessControlEntry(true, "jcr:read", accessControlledPath , false));
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
@@ -160,7 +174,7 @@
         RepoPath accessControlledPath = new RepoPath("/content/feature");
         aclManager.addAcl(systemUser.getId(), new AccessControlEntry(true, "jcr:read", accessControlledPath , false));
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
@@ -186,7 +200,7 @@
         RepoPath accessControlledPath = new RepoPath("/content/feature");
         aclManager.addAcl("user1", new AccessControlEntry(true, "jcr:read", accessControlledPath, true));
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
@@ -213,7 +227,7 @@
         AccessControlEntry acl = new AccessControlEntry(true, "jcr:read", accessControlledPath, true);
         aclManager.addAcl("user1", acl);
 
-        aclManager.addRepoinitExtension(Arrays.asList(assembler), fm);
+        aclManager.addRepoinitExtension(Collections.singletonList(assembler), fm);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandlerTest.java
index bfe3fa3..06a8a74 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandlerTest.java
@@ -16,15 +16,6 @@
  */
 package org.apache.sling.feature.cpconverter.handlers;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-
 import org.apache.jackrabbit.vault.fs.config.DefaultMetaInf;
 import org.apache.jackrabbit.vault.fs.io.Archive;
 import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
@@ -40,6 +31,15 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import java.util.Collections;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
 public class PrivilegesHandlerTest {
 
     private PrivilegesHandler handler;
@@ -87,7 +87,7 @@
 
         handler.handle(path, archive, entry, converter);
 
-        converter.getAclManager().addRepoinitExtension(Arrays.asList(packageAssembler), featuresManager);
+        converter.getAclManager().addRepoinitExtension(Collections.singletonList(packageAssembler), featuresManager);
 
         Extension repoinitExtension = feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
         assertNotNull(repoinitExtension);
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPolicyEntryHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPolicyEntryHandlerTest.java
index e1c4b48..c70d39d 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPolicyEntryHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPolicyEntryHandlerTest.java
@@ -17,7 +17,6 @@
 package org.apache.sling.feature.cpconverter.handlers;
 
 import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.cpconverter.accesscontrol.AclManager;
 import org.apache.sling.feature.cpconverter.accesscontrol.DefaultAclManager;
 import org.apache.sling.feature.cpconverter.accesscontrol.Group;
@@ -38,11 +37,8 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
 
 public final class RepPolicyEntryHandlerTest {
 
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandlerTest.java
index 9849b4f..fa4e04e 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepPrincipalPolicyEntryHandlerTest.java
@@ -17,7 +17,6 @@
 package org.apache.sling.feature.cpconverter.handlers;
 
 import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.cpconverter.accesscontrol.AclManager;
 import org.apache.sling.feature.cpconverter.accesscontrol.DefaultAclManager;
 import org.apache.sling.feature.cpconverter.accesscontrol.SystemUser;
@@ -37,7 +36,6 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 public final class RepPrincipalPolicyEntryHandlerTest {
@@ -102,7 +100,7 @@
 
     @Test(expected = IllegalStateException.class)
     public void parsePolicyInSubtree() throws Exception {
-        parseAndSetRepoinit("service3", "random3").getRepoinitExtension();
+        parseAndSetRepoinit("service3", "random3");
     }
 
     @Test
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepRepoPolicyEntryHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepRepoPolicyEntryHandlerTest.java
index cf65878..1d79ef1 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepRepoPolicyEntryHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepRepoPolicyEntryHandlerTest.java
@@ -17,7 +17,6 @@
 package org.apache.sling.feature.cpconverter.handlers;
 
 import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.cpconverter.accesscontrol.AclManager;
 import org.apache.sling.feature.cpconverter.accesscontrol.DefaultAclManager;
 import org.apache.sling.feature.cpconverter.accesscontrol.SystemUser;
@@ -34,9 +33,7 @@
 import java.io.StringReader;
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 public class RepRepoPolicyEntryHandlerTest {
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/TestUtils.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/TestUtils.java
index 396766a..a950260 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/TestUtils.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/TestUtils.java
@@ -33,7 +33,7 @@
 import java.io.File;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.Arrays;
+import java.util.Collections;
 
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
@@ -71,7 +71,7 @@
 
         when(packageAssembler.getEntry(anyString())).thenReturn(new File("itdoesnotexist"));
 
-        converter.getAclManager().addRepoinitExtension(Arrays.asList(packageAssembler), featuresManager);
+        converter.getAclManager().addRepoinitExtension(Collections.singletonList(packageAssembler), featuresManager);
         return feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
     }
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/UsersEntryHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/UsersEntryHandlerTest.java
index 5ba09b5..914a51c 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/UsersEntryHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/UsersEntryHandlerTest.java
@@ -16,21 +16,6 @@
  */
 package org.apache.sling.feature.cpconverter.handlers;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import java.io.StringReader;
-import java.util.List;
-
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.cpconverter.accesscontrol.AclManager;
@@ -44,6 +29,20 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import java.io.StringReader;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
 public class UsersEntryHandlerTest {
 
     private UsersEntryHandler usersEntryHandler;
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/NodeTypesDetectionTest.java b/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/NodeTypesDetectionTest.java
index ea80563..6d36490 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/NodeTypesDetectionTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/NodeTypesDetectionTest.java
@@ -28,6 +28,7 @@
 import java.util.regex.Pattern;
 
 import org.apache.jackrabbit.vault.fs.io.ImportOptions;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -47,7 +48,7 @@
 
         new BaseVaultPackageScanner(true) {
 
-            protected void addCdnPattern(Pattern cndPattern) {
+            protected void addCdnPattern(@NotNull Pattern cndPattern) {
                 detectedCndFiles.add(cndPattern.pattern());
             }
 
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/PackagesEventsEmitterTest.java b/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/PackagesEventsEmitterTest.java
index 1dce955..0eee6bf 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/PackagesEventsEmitterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/PackagesEventsEmitterTest.java
@@ -16,32 +16,23 @@
  */
 package org.apache.sling.feature.cpconverter.vltpkg;
 
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.jackrabbit.vault.packaging.Dependency;
+import org.apache.jackrabbit.vault.packaging.PackageException;
+import org.apache.jackrabbit.vault.packaging.PackageId;
+import org.apache.jackrabbit.vault.packaging.PackageType;
+import org.apache.jackrabbit.vault.packaging.VaultPackage;
+import org.junit.Test;
+
+import javax.jcr.RepositoryException;
+import java.io.File;
+import java.io.StringWriter;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.StringWriter;
-import java.util.Calendar;
-
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-
-import org.apache.jackrabbit.vault.fs.config.MetaInf;
-import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.ImportOptions;
-import org.apache.jackrabbit.vault.packaging.Dependency;
-import org.apache.jackrabbit.vault.packaging.PackageException;
-import org.apache.jackrabbit.vault.packaging.PackageId;
-import org.apache.jackrabbit.vault.packaging.PackageProperties;
-import org.apache.jackrabbit.vault.packaging.PackageType;
-import org.apache.jackrabbit.vault.packaging.SubPackageHandling;
-import org.apache.jackrabbit.vault.packaging.VaultPackage;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 public class PackagesEventsEmitterTest {