public abstract class AbstractFoo
public abstract AbstractBar getBar();
public class Foo extends AbstractFoo
public Bar getBar();
Here property bar is covariant; the subclass (Foo) changes the type of the return value (from AbstractBar to just Bar). Assuming that Bar is a subclass of AbstractBar, that's fine.
The bug is that in this circumstance, the PropertyConduitSource sees the type of
property "bar" of class Foo as AbstractBar, not Bar.
Interestingly, a little debugging showed that the getter method for property bar was "public AbstractBar Foo.getBar()" ... in other words, much like with Generics, covariant return types may be largely
a fiction of the compiler inserting the necessary casts in place.