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