eliminate null analysis warnings
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
index cd8ee56..351d926 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/FsResourceProvider.java
@@ -206,8 +206,9 @@
             if ( rsrc == null || rsrc.getResourceMetadata().containsKey(RESOURCE_METADATA_FILE_DIRECTORY) ) {
             	// get resource from shadowed provider
             	final ResourceProvider rp = ctx.getParentResourceProvider();
-            	if ( rp != null ) {
-            	    Resource resourceFromParentResourceProvider = rp.getResource((ResolveContext)ctx.getParentResolveContext(), 
+            	final ResolveContext resolveContext = (ResolveContext)ctx.getParentResolveContext();
+            	if ( rp != null && resolveContext != null ) {
+            	    Resource resourceFromParentResourceProvider = rp.getResource(resolveContext, 
     	            		path, 
     	            		resourceContext, parent);
             	    if (resourceFromParentResourceProvider != null) {
@@ -256,8 +257,9 @@
     	// get children from from shadowed provider
         if (askParentResourceProvider) {
         	final ResourceProvider parentResourceProvider = ctx.getParentResourceProvider();
-        	if (parentResourceProvider != null) {
-        		children = parentResourceProvider.listChildren(ctx.getParentResolveContext(), parent);
+            final ResolveContext resolveContext = (ResolveContext)ctx.getParentResolveContext();
+        	if (parentResourceProvider != null && resolveContext != null) {
+        		children = parentResourceProvider.listChildren(resolveContext, parent);
                 if (children != null) {
                     if (fsMode == FsMode.FILEVAULT_XML) {
                         // filevault: include all children from parent resource provider that do not match the filters
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
index d27458e..25638b7 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/ContentFileResourceMapper.java
@@ -139,6 +139,9 @@
         }
         // try to find in parent path which contains content fragment
         String parentPath = ResourceUtil.getParent(path);
+        if (parentPath == null) {
+            return null;
+        }
         String nextSubPath = path.substring(parentPath.length() + 1)
                 + (subPath != null ? "/" + subPath : "");
         return getFile(parentPath, nextSubPath);
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
index 23abe66..c0fb1cd 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsNode.java
@@ -90,6 +90,7 @@
     }
     
     @Override
+    @SuppressWarnings("null")
     public Node getNode(String relPath) throws PathNotFoundException, RepositoryException {
         if (relPath == null) {
             throw new PathNotFoundException();
diff --git a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
index 4ca2873..7d53f88 100644
--- a/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
+++ b/src/main/java/org/apache/sling/fsprovider/internal/mapper/jcr/FsValue.java
@@ -55,7 +55,11 @@
     @Override
     public String getString() throws ValueFormatException, IllegalStateException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, String[].class)[arrayIndex];
+            String[] array = props.get(propertyName, String[].class);
+            if (array == null) {
+                return null;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, String.class);
@@ -65,7 +69,11 @@
     @Override
     public long getLong() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, Long[].class)[arrayIndex];
+            Long[] array = props.get(propertyName, Long[].class);
+            if (array == null) {
+                return 0;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, 0L);
@@ -75,7 +83,11 @@
     @Override
     public double getDouble() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, Double[].class)[arrayIndex];
+            Double[] array = props.get(propertyName, Double[].class);
+            if (array == null) {
+                return 0;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, 0d);
@@ -85,7 +97,11 @@
     @Override
     public BigDecimal getDecimal() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, BigDecimal[].class)[arrayIndex];
+            BigDecimal[] array = props.get(propertyName, BigDecimal[].class);
+            if (array == null) {
+                return null;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, BigDecimal.ZERO);
@@ -95,7 +111,11 @@
     @Override
     public Calendar getDate() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, Calendar[].class)[arrayIndex];
+            Calendar[] array = props.get(propertyName, Calendar[].class);
+            if (array == null) {
+                return null;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, Calendar.class);
@@ -105,7 +125,11 @@
     @Override
     public boolean getBoolean() throws ValueFormatException, RepositoryException {
         if (arrayIndex >= 0) {
-            return props.get(propertyName, Boolean[].class)[arrayIndex];
+            Boolean[] array = props.get(propertyName, Boolean[].class);
+            if (array == null) {
+                return false;
+            }
+            return array[arrayIndex];
         }
         else {
             return props.get(propertyName, false);