diff --git a/.gitignore b/.gitignore
index c7f991e..5b783ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,6 @@
 *.iws
 *.bak
 .vlt
-.vscode
 .DS_Store
 jcr.log
 atlassian-ide-plugin.xml
diff --git a/pom.xml b/pom.xml
index e65c2cb..695d168 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature</artifactId>
-            <version>1.3.0-SNAPSHOT</version>
+            <version>1.2.10</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsBundleExportsImports.java b/src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsBundleExportsImports.java
index 072e69b..e3ca7cb 100644
--- a/src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsBundleExportsImports.java
+++ b/src/main/java/org/apache/sling/feature/extension/apiregions/analyser/CheckApiRegionsBundleExportsImports.java
@@ -34,7 +34,6 @@
 import javax.json.JsonArray;
 
 import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.ArtifactResolution;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.Extensions;
 import org.apache.sling.feature.Feature;
@@ -257,13 +256,13 @@
                 ctx.reportWarning(key + " is exporting package(s) " + getPackageInfo(entry.getValue().importWithoutVersion, false) + " without a version.");
             }
 
-            if ( !entry.getValue().missingExports.isEmpty() && entry.getKey().getArtifact().getResolution() == ArtifactResolution.MANDATORY ) {
+            if ( !entry.getValue().missingExports.isEmpty() ) {
                 ctx.reportError(key + " is importing package(s) " + getPackageInfo(entry.getValue().missingExports, false) + " in start level " +
                         String.valueOf(entry.getKey().getArtifact().getStartOrder())
                         + " but no bundle is exporting these for that start level.");
                 errorReported = true;
             }
-            if ( !entry.getValue().missingExportsWithVersion.isEmpty() && entry.getKey().getArtifact().getResolution() == ArtifactResolution.MANDATORY ) {
+            if ( !entry.getValue().missingExportsWithVersion.isEmpty() ) {
                 StringBuilder message = new StringBuilder(key + " is importing package(s) " + getPackageInfo(entry.getValue().missingExportsWithVersion, true) + " in start level " +
                         String.valueOf(entry.getKey().getArtifact().getStartOrder())
                         + " but no visible bundle is exporting these for that start level in the required version range.");
