It looks like shortcut methods such as ObjectExpression.getValue() should be final. Otherwise you have to override both get and getValue in order to alter their behavior. Is it too late to make them final?
public abstract class ObjectExpression<T> implements ObservableObjectValue<T> {
@Override
public T getValue() {
return get();
}
....
}
public abstract class ObjectExpression<T> implements ObservableObjectValue<T> {
@Override
public T getValue() {
return get();
}
....
}