Add failing test for #2644
diff --git a/src/test/java/com/fasterxml/jackson/failing/JDKNumberDeser2644Test.java b/src/test/java/com/fasterxml/jackson/failing/JDKNumberDeser2644Test.java
new file mode 100644
index 0000000..c358e69
--- /dev/null
+++ b/src/test/java/com/fasterxml/jackson/failing/JDKNumberDeser2644Test.java
@@ -0,0 +1,54 @@
+package com.fasterxml.jackson.failing;
+
+import java.math.BigDecimal;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.databind.*;
+
+public class JDKNumberDeser2644Test extends BaseMapTest
+{
+    // [databind#2644]
+    static class NodeRoot2644 {
+        public String type;
+
+        @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
+        @JsonSubTypes(value = {
+                @JsonSubTypes.Type(value = NodeParent2644.class, name = "NodeParent")
+        })
+        public Node2644 node;
+    }
+
+    public static class NodeParent2644 extends Node2644 { }
+
+    public static abstract class Node2644 {
+        @JsonProperty("amount")
+        BigDecimal val;
+
+        public BigDecimal getVal() {
+            return val;
+        }
+
+        public void setVal(BigDecimal val) {
+            this.val = val;
+        }
+    }
+
+    // [databind#2644]
+    public void testBigDecimalSubtypes() throws Exception
+    {
+        ObjectMapper mapper = newJsonMapper();
+        mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
+        mapper.registerSubtypes(NodeParent2644.class);
+
+        NodeRoot2644 root = mapper.readValue(
+                "{\"type\": \"NodeParent\",\"node\": {\"amount\": 9999999999999999.99} }",
+                NodeRoot2644.class
+        );
+
+        assertEquals(new BigDecimal("9999999999999999.99"), root.node.getVal());
+
+    }
+
+}