add tests for #330
diff --git a/src/main/java/com/fasterxml/jackson/core/json/ReaderBasedJsonParser.java b/src/main/java/com/fasterxml/jackson/core/json/ReaderBasedJsonParser.java
index dd338e5..7033d84 100644
--- a/src/main/java/com/fasterxml/jackson/core/json/ReaderBasedJsonParser.java
+++ b/src/main/java/com/fasterxml/jackson/core/json/ReaderBasedJsonParser.java
@@ -1892,7 +1892,7 @@
             }
             return _handleInvalidNumberStart(_inputBuffer[_inputPtr++], false);
         }
-        // [Issue#77] Try to decode most likely token
+        // [core#77] Try to decode most likely token
         if (Character.isJavaIdentifierStart(i)) {
             _reportInvalidToken(""+((char) i), "('true', 'false' or 'null')");
         }
diff --git a/src/test/java/com/fasterxml/jackson/core/BaseTest.java b/src/test/java/com/fasterxml/jackson/core/BaseTest.java
index ca8ce4f..053869a 100644
--- a/src/test/java/com/fasterxml/jackson/core/BaseTest.java
+++ b/src/test/java/com/fasterxml/jackson/core/BaseTest.java
@@ -422,6 +422,7 @@
     {
         StringWriter sw = new StringWriter(100);
         JsonGenerator g = f.createGenerator(sw);
+        g.disable(JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT);
         try {
             while (p.nextToken() != null) {
                 g.copyCurrentEvent(p);
diff --git a/src/test/java/com/fasterxml/jackson/core/filter/BasicParserFilteringTest.java b/src/test/java/com/fasterxml/jackson/core/filter/BasicParserFilteringTest.java
index f7de6b5..7c061ec 100644
--- a/src/test/java/com/fasterxml/jackson/core/filter/BasicParserFilteringTest.java
+++ b/src/test/java/com/fasterxml/jackson/core/filter/BasicParserFilteringTest.java
@@ -91,20 +91,6 @@
     }
 
     @SuppressWarnings("resource")
-    public void testSingleMatchFilteringWithPath() throws Exception
-    {
-        JsonParser p0 = JSON_F.createParser(SIMPLE);
-        JsonParser p = new FilteringParserDelegate(p0,
-               new NameMatchFilter("value"),
-                   true, // includePath
-                   false // multipleMatches
-                );
-        String result = readAndWrite(JSON_F, p);
-        assertEquals(aposToQuotes("{'ob':{'value':3}}"), result);
-    }
-
-    
-    @SuppressWarnings("resource")
     public void testNotAllowMultipleMatches() throws Exception
     {
     	String jsonString = aposToQuotes("{'a':123,'array':[1,2],'ob':{'value0':2,'value':3,'value2':4},'value':4,'b':true}");
diff --git a/src/test/java/com/fasterxml/jackson/failing/TokenVerifyingParserFiltering330Test.java b/src/test/java/com/fasterxml/jackson/failing/TokenVerifyingParserFiltering330Test.java
new file mode 100644
index 0000000..88cf4de
--- /dev/null
+++ b/src/test/java/com/fasterxml/jackson/failing/TokenVerifyingParserFiltering330Test.java
@@ -0,0 +1,137 @@
+package com.fasterxml.jackson.failing;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.core.JsonParser.NumberType;
+import com.fasterxml.jackson.core.filter.FilteringParserDelegate;
+import com.fasterxml.jackson.core.filter.TokenFilter;
+
+// Tests for [core#330]
+public class TokenVerifyingParserFiltering330Test extends BaseTest
+{
+    static class NameMatchFilter extends TokenFilter
+    {
+        private final Set<String> _names;
+        
+        public NameMatchFilter(String... names) {
+            _names = new HashSet<String>(Arrays.asList(names));
+        }
+
+        @Override
+        public TokenFilter includeElement(int index) {
+            return this;
+        }
+
+        @Override
+        public TokenFilter includeProperty(String name) {
+            if (_names.contains(name)) {
+                return TokenFilter.INCLUDE_ALL;
+            }
+            return this;
+        }
+
+        @Override
+        protected boolean _includeScalar() { return false; }
+    }
+
+    /*
+    /**********************************************************
+    /* Test methods
+    /**********************************************************
+     */
+
+    private final JsonFactory JSON_F = new JsonFactory();
+
+    private final String SIMPLE = aposToQuotes("{'a':123,'array':[1,2],'ob':{'value0':2,'value':3,'value2':4},'b':true}");
+    
+    @SuppressWarnings("resource")
+    public void testBasicSingleMatchFilteringWithPath() throws Exception
+    {
+        JsonParser p0 = JSON_F.createParser(SIMPLE);
+        JsonParser p = new FilteringParserDelegate(p0,
+               new NameMatchFilter("value"),
+                   true, // includePath
+                   false // multipleMatches
+                );
+
+// {'a':123,'array':[1,2],'ob':{'value0':2,'value':3,'value2':4},'b':true}
+        String result = readAndWrite(JSON_F, p);
+        assertEquals(aposToQuotes("{'ob':{'value':3}}"), result);
+    }
+    
+    @SuppressWarnings("resource")
+    public void testTokensSingleMatchWithPath() throws Exception
+    {
+        JsonParser p0 = JSON_F.createParser(SIMPLE);
+        JsonParser p = new FilteringParserDelegate(p0,
+               new NameMatchFilter("value"),
+                   true, // includePath
+                   false // multipleMatches
+                );
+
+        assertFalse(p.hasCurrentToken());
+        assertNull(p.getCurrentToken());
+        assertEquals(JsonTokenId.ID_NO_TOKEN, p.getCurrentTokenId());
+        assertFalse(p.isExpectedStartObjectToken());
+        assertFalse(p.isExpectedStartArrayToken());
+        
+// {'a':123,'array':[1,2],'ob':{'value0':2,'value':3,'value2':4},'b':true}
+//      String result = readAndWrite(JSON_F, p);
+//      assertEquals(aposToQuotes("{'ob':{'value':3}}"), result);
+
+        assertToken(JsonToken.START_OBJECT, p.nextToken());
+        assertEquals(JsonToken.START_OBJECT, p.getCurrentToken());
+        assertTrue(p.isExpectedStartObjectToken());
+        assertFalse(p.isExpectedStartArrayToken());
+
+        assertToken(JsonToken.FIELD_NAME, p.nextToken());
+        assertEquals(JsonToken.FIELD_NAME, p.getCurrentToken());
+        assertEquals("ob", p.getCurrentName());
+//        assertEquals("ob", p.getText());
+
+        assertToken(JsonToken.START_OBJECT, p.nextToken());
+        assertEquals("ob", p.getCurrentName());
+
+        assertToken(JsonToken.FIELD_NAME, p.nextToken());
+        assertEquals("value", p.getCurrentName());
+        assertEquals("value", p.getText());
+
+        assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
+        assertEquals(JsonToken.VALUE_NUMBER_INT, p.getCurrentToken());
+        assertEquals(NumberType.INT, p.getNumberType());
+        assertEquals(3, p.getIntValue());
+        assertEquals("value", p.getCurrentName());
+
+        assertToken(JsonToken.END_OBJECT, p.nextToken());
+        assertEquals(JsonToken.END_OBJECT, p.getCurrentToken());
+
+        assertToken(JsonToken.END_OBJECT, p.nextToken());
+        assertEquals(JsonToken.END_OBJECT, p.getCurrentToken());
+
+        p.clearCurrentToken();
+        assertNull(p.getCurrentToken());
+        
+        p.close();
+    }
+
+    @SuppressWarnings("resource")
+    public void testSkippingForSingleWithPath() throws Exception
+    {
+        JsonParser p0 = JSON_F.createParser(SIMPLE);
+        JsonParser p = new FilteringParserDelegate(p0,
+               new NameMatchFilter("value"),
+                   true, // includePath
+                   false // multipleMatches
+                );
+
+//        assertEquals(aposToQuotes("{'ob':{'value':3}}"), result);
+
+        assertToken(JsonToken.START_OBJECT, p.nextToken());
+        p.skipChildren();
+        assertEquals(JsonToken.END_OBJECT, p.getCurrentToken());
+        assertNull(p.nextToken());
+    }
+}