@Override
    public final Subscription observe(O observer) {
        P adapted = adaptObserver(observer);
        underlying.addObserver(adapted);
        return () -> underlying.removeObserver(adapted);
    }
@Override
    public final Subscription observe(O observer) {
        P adapted = adaptObserver(observer);
        underlying.addObserver(adapted);
        return () -> underlying.removeObserver(adapted);
    }
@ Override public final Subscription observe ( O observer ) { P adapted = adaptObserver ( observer ) ; underlying . addObserver ( adapted ) ; return ( ) -> underlying . removeObserver ( adapted ) ; }
Overridden to avoid second transformation on removeObserver
Overridden to avoid second transformation on removeObserver