Fix #2096
diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x
index 32c2069..89059df 100644
--- a/release-notes/VERSION-2.x
+++ b/release-notes/VERSION-2.x
@@ -10,6 +10,8 @@
   of type `UnwrappingBeanSerializer`
  (reported by Petar T)
 #2082: `FactoryBasedEnumDeserializer` should be cachable
+#2096: `TreeTraversingParser` does not take base64 variant into account
+ (reported by tangiel@github)
 #2109: Canonical string for reference type is built incorrectly
  (reported by svarzee@github)
 
diff --git a/src/main/java/com/fasterxml/jackson/databind/node/TreeTraversingParser.java b/src/main/java/com/fasterxml/jackson/databind/node/TreeTraversingParser.java
index aa3f309..40bf3d3 100644
--- a/src/main/java/com/fasterxml/jackson/databind/node/TreeTraversingParser.java
+++ b/src/main/java/com/fasterxml/jackson/databind/node/TreeTraversingParser.java
@@ -357,19 +357,13 @@
     {
         // Multiple possibilities...
         JsonNode n = currentNode();
-        if (n != null) { // binary node?
-            byte[] data = n.binaryValue();
-            // (or TextNode, which can also convert automatically!)
-            if (data != null) {
-                return data;
+        if (n != null) {
+            // [databind#2096]: although `binaryValue()` works for real binary node
+            // and embedded "POJO" node, coercion from TextNode may require variant, so:
+            if (n instanceof TextNode) {
+                return ((TextNode) n).getBinaryValue(b64variant);
             }
-            // Or maybe byte[] as POJO?
-            if (n.isPojo()) {
-                Object ob = ((POJONode) n).getPojo();
-                if (ob instanceof byte[]) {
-                    return (byte[]) ob;
-                }
-            }
+            return n.binaryValue();
         }
         // otherwise return null to mark we have no binary content
         return null;
diff --git a/src/test/java/com/fasterxml/jackson/databind/node/TestConversions.java b/src/test/java/com/fasterxml/jackson/databind/node/TestConversions.java
index fedf874..e22082d 100644
--- a/src/test/java/com/fasterxml/jackson/databind/node/TestConversions.java
+++ b/src/test/java/com/fasterxml/jackson/databind/node/TestConversions.java
@@ -175,10 +175,22 @@
                 try {
                     data = n.getBinaryValue(variant);
                 } catch (Exception e) {
-                    throw new IOException("Failed (variant "+variant+", data length "+len+"): "+e.getMessage());
+                    fail("Failed (variant "+variant+", data length "+len+"): "+e.getMessage());
                 }
                 assertNotNull(data);
                 assertArrayEquals(data, input);
+
+                // 15-Aug-2018, tatu: [databind#2096] requires another test
+                JsonParser p = new TreeTraversingParser(n);
+                assertEquals(JsonToken.VALUE_STRING, p.nextToken());
+                try {
+                    data = p.getBinaryValue(variant);
+                } catch (Exception e) {
+                    fail("Failed (variant "+variant+", data length "+len+"): "+e.getMessage());
+                }
+                assertNotNull(data);
+                assertArrayEquals(data, input);
+                p.close();
             }
         }
     }