The signature of `Func1<? super Observable<TIntermediate>, ? extends Observable<TResult>> selector` prevents us from removing casting. Any better idea?