File: src/main/java/com/fasterxml/jackson/databind/deser/std/NullifyingDeserializer.java
Issue: Jackson not continue to parse after DeserializationFeature.FAIL_ON_INVALID_SUBTYPE error
After FAIL_ON_INVALID_SUBTYPE error, jackson should continue to parse, but seems jackson doesn't.
The output:
CallRecord [version=0.0, application=123, ] // doesn't read item2 which is valid
CallRecord [version=0.0, application=123, ]
CallRecord [version=0.0, ] // doesn't read application after invalid item.

@JsonInclude(Include.NON_NULL)
public class CallRecord {
    public float version;
    public String application;
    public Item item;
    public Item item2;
    public CallRecord() {}

    public static void main(final String[] args) throws IOException {
        final ObjectMapper objectMapper = new ObjectMapper().disable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE,
                DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
        final CallRecord call = new CallRecord();

        final Event event = new Event();
        event.location = "location1";
        call.item = event;
        call.item2 = event;
        call.application = "123";
        // System.out.println(objectMapper.writeValueAsString(call));
        String json =
                "{\"version\":0.0,\"application\":\"123\",\"item\":{\"type\":\"xevent\",\"location\":\"location1\"},\"item2\":{\"type\":\"event\",\"location\":\"location1\"}}";
        // can't read item2 - which is valid
        System.out.println(objectMapper.readValue(json, CallRecord.class));

        json = "{\"version\":0.0,\"application\":\"123\"},{\"item\":{\"type\":\"xevent\",\"location\":\"location1\"}";
        System.out.println(objectMapper.readValue(json, CallRecord.class));

        json = "{\"item\":{\"type\":\"xevent\",\"location\":\"location1\"}, \"version\":0.0,\"application\":\"123\"}";
        // order matters: move item to the fornt, now it can't read application property
        System.out.println(objectMapper.readValue(json, CallRecord.class));
    }
    @Override
    public String toString() {
        final StringBuilder builder = new StringBuilder();
        builder.append("CallRecord [version=").append(version).append(", ");
        if (application != null) {
            builder.append("application=").append(application).append(", ");
        }
        if (item != null) {
            builder.append("item=").append(item);
        }
        builder.append("]");
        return builder.toString();
    }
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)
@JsonSubTypes({@Type(value = Event.class, name = Event.TYPE)})
public interface Item {
}

public final class Event implements Item {
    public String location;
    public static final String TYPE = "event";
    public Event() {}
}

Buggy code:
public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException
{
    // 29-Jan-2016, tatu: Simple skipping for all other tokens, but FIELD_NAME bit
    //    special unfortunately
        p.skipChildren();
    return null;
}

Fixed code:
public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException
{
    // 29-Jan-2016, tatu: Simple skipping for all other tokens, but FIELD_NAME bit
    //    special unfortunately
    if (p.hasToken(JsonToken.FIELD_NAME)) {
        while (true) {
            JsonToken t = p.nextToken();
            if ((t == null) || (t == JsonToken.END_OBJECT)) {
                break;
            }
            p.skipChildren();
        }
    } else {
        p.skipChildren();
    }
    return null;
}