@@ -0,0 +1,1940 @@
+package com.fasterxml.jackson.failing;%0A%0Aimport com.fasterxml.jackson.databind.BaseMapTest;%0Aimport com.fasterxml.jackson.databind.ObjectMapper;%0Aimport com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;%0Aimport com.fasterxml.jackson.databind.json.JsonMapper;%0Aimport com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;%0Aimport com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;%0A%0A// %5Bdatabund#3194%5D: Discrepancy between Type Id inclusion on serialization vs%0A// expectation during deserialization causes mismatch and fails deserialization.%0Apublic class PolymorphicArrays3194Test extends BaseMapTest%0A%7B%0A    static final class SomeBean %7B%0A        public Object%5B%5D%5B%5D value;%0A    %7D%0A%0A    public void testTwoDimensionalArrayMapping() throws Exception%0A    %7B%0A        PolymorphicTypeValidator typeValidator = BasicPolymorphicTypeValidator.builder()%0A                .allowIfSubTypeIsArray()%0A                .allowIfSubType(Object.class)%0A                .build();%0A%0A        ObjectMapper mapper = JsonMapper%0A                .builder()%0A                .activateDefaultTyping(typeValidator, DefaultTyping.NON_FINAL)%0A                .build();%0A%0A        SomeBean instance = new SomeBean();%0A        instance.value = new String%5B%5D%5B%5D%7B%7B%221.1%22, %221.2%22%7D, %7B%222.1%22, %222.2%22%7D%7D;%0A        String json = mapper%0A//                .writerWithDefaultPrettyPrinter()%0A                .writeValueAsString(instance);%0A        %0A        // Note: we'll see something like:%0A        // %0A//  %7B%0A//    %22value%22 : %5B %22%5B%5BLjava.lang.String;%22, %5B %5B %22%5BLjava.lang.String;%22, %5B %221.1%22, %221.2%22 %5D %5D, %5B %22%5BLjava.lang.String;%22, %5B %222.1%22, %222.2%22 %5D %5D %5D %5D%0A//  %7D%0A%0A     // that is, type ids for both array levels.   %0A        %0A// System.err.println(%22JSON:%5Cn%22+json);        %0A        SomeBean result = mapper.readValue(json, SomeBean.class); // fails%0A        assertEquals(String%5B%5D%5B%5D.class, result.value.getClass());%0A        assertEquals(String%5B%5D.class, result.value%5B0%5D.getClass());%0A    %7D%0A%7D%0A

Add (failing) test for #3194