File: src/main/java/com/fasterxml/jackson/databind/type/SimpleType.java
Issue: Problem with polymorphic types, losing properties from base type(s)
(background, see: dropwizard/dropwizard#1449)
Looks like sub-type resolution may be broken for one particular case: that of using defaultImpl. If so, appears like properties from super-types are not properly resolved; guessing this could be follow-up item for #1083 (even sooner than I thought...).

Buggy code:
protected JavaType _narrow(Class<?> subclass)
{
    if (_class == subclass) {
        return this;
    }
    // Should we check that there is a sub-class relationship?
    // 15-Jan-2016, tatu: Almost yes, but there are some complications with
    //    placeholder values (`Void`, `NoClass`), so can not quite do yet.
    // TODO: fix in 2.8
        /*
        throw new IllegalArgumentException("Class "+subclass.getName()+" not sub-type of "
                +_class.getName());
                */
        return new SimpleType(subclass, _bindings, this, _superInterfaces,
                _valueHandler, _typeHandler, _asStatic);
    // Otherwise, stitch together the hierarchy. First, super-class
    // if not found, try a super-interface
    // should not get here but...
}

Fixed code:
protected JavaType _narrow(Class<?> subclass)
{
    if (_class == subclass) {
        return this;
    }
    // Should we check that there is a sub-class relationship?
    // 15-Jan-2016, tatu: Almost yes, but there are some complications with
    //    placeholder values (`Void`, `NoClass`), so can not quite do yet.
    // TODO: fix in 2.8
    if (!_class.isAssignableFrom(subclass)) {
        /*
        throw new IllegalArgumentException("Class "+subclass.getName()+" not sub-type of "
                +_class.getName());
                */
        return new SimpleType(subclass, _bindings, this, _superInterfaces,
                _valueHandler, _typeHandler, _asStatic);
    }
    // Otherwise, stitch together the hierarchy. First, super-class
    Class<?> next = subclass.getSuperclass();
    if (next == _class) { // straight up parent class? Great.
        return new SimpleType(subclass, _bindings, this,
                _superInterfaces, _valueHandler, _typeHandler, _asStatic);
    }
    if ((next != null) && _class.isAssignableFrom(next)) {
        JavaType superb = _narrow(next);
        return new SimpleType(subclass, _bindings, superb,
                null, _valueHandler, _typeHandler, _asStatic);
    }
    // if not found, try a super-interface
    Class<?>[] nextI = subclass.getInterfaces();
    for (Class<?> iface : nextI) {
        if (iface == _class) { // directly implemented
            return new SimpleType(subclass, _bindings, null,
                    new JavaType[] { this }, _valueHandler, _typeHandler, _asStatic);
        }
        if (_class.isAssignableFrom(iface)) { // indirect, so recurse
            JavaType superb = _narrow(iface);
            return new SimpleType(subclass, _bindings, null,
                    new JavaType[] { superb }, _valueHandler, _typeHandler, _asStatic);
        }
    }
    // should not get here but...
    throw new IllegalArgumentException("Internal error: Can not resolve sub-type for Class "+subclass.getName()+" to "
            +_class.getName());
}