Further fixes to parser filtering
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 a3194c3..98a507e 100644
--- a/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java
+++ b/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java
@@ -373,9 +373,17 @@
             }
 
         default: // scalar value
-            if (_itemFilter == TokenFilter.INCLUDE_ALL) {
+            f = _itemFilter;
+            if (f == TokenFilter.INCLUDE_ALL) {
                 return (_currToken = t);
             }
+            if (f != null) {
+                f = _headContext.checkValue(f);
+                if ((f == TokenFilter.INCLUDE_ALL)
+                        || ((f != null) && f.includeValue(delegate))) {
+                    return (_currToken = t);
+                }
+            }
             // Otherwise not included (leaves must be explicitly included)
             break;
         }
@@ -509,12 +517,18 @@
 
             default: // scalar value
                 f = _itemFilter;
-                if ((f == TokenFilter.INCLUDE_ALL)
-                        || ((f != null) && f.includeValue(delegate))) {
+                if (f == TokenFilter.INCLUDE_ALL) {
                     return (_currToken = t);
                 }
+                if (f != null) {
+                    f = _headContext.checkValue(f);
+                    if ((f == TokenFilter.INCLUDE_ALL)
+                            || ((f != null) && f.includeValue(delegate))) {
+                        return (_currToken = t);
+                    }
+                }
                 // Otherwise not included (leaves must be explicitly included)
-                continue main_loop;
+                break;
             }
         }
     }
@@ -630,10 +644,19 @@
                 continue main_loop;
 
             default: // scalar value
-                if (_itemFilter == TokenFilter.INCLUDE_ALL) {
+                f = _itemFilter;
+                if (f == TokenFilter.INCLUDE_ALL) {
                     return _nextBuffered();
                 }
+                if (f != null) {
+                    f = _headContext.checkValue(f);
+                    if ((f == TokenFilter.INCLUDE_ALL)
+                            || ((f != null) && f.includeValue(delegate))) {
+                        return _nextBuffered();
+                    }
+                }
                 // Otherwise not included (leaves must be explicitly included)
+                continue main_loop;
             }
         }
     }