fix to parser filtering, arrays
diff --git a/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java b/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java
index bfbc4ec..98c643d 100644
--- a/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java
+++ b/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java
@@ -234,6 +234,14 @@
                 // all done with buffered stuff?
                 if (ctxt == _headContext) {
                     _exposedContext = null;
+                    if (ctxt.inArray()) {
+                        t = delegate.getCurrentToken();
+// Is this guaranteed to work without further checks?
+//                        if (t != JsonToken.START_ARRAY) {
+                        _currToken = t;
+                        return t;
+                    }
+
                     // Almost! Most likely still have the current token;
                     // with the sole exception of 
                     /*
@@ -563,7 +571,6 @@
         main_loop:
         while (true) {
             JsonToken t = delegate.nextToken();
-
             if (t == null) { // is this even legal?
                 return (_currToken = t);
             }
@@ -584,10 +591,11 @@
                     f = f.filterStartArray();
                 }
                 _itemFilter = f;
-                _headContext = _headContext.createChildArrayContext(f, true);
                 if (f == TokenFilter.INCLUDE_ALL) {
+                    _headContext = _headContext.createChildArrayContext(f, true);
                     return _nextBuffered();
                 }
+                _headContext = _headContext.createChildArrayContext(f, false);
                 continue main_loop;
 
             case ID_START_OBJECT: