I can not find a way to eliminate casting unless I change `public final <R> Observable<R> publish(Func1<? super Observable<T>, ? extends Observable<R>> selector) ` to  `public final <R> Observable<R> publish(Func1<? super Observable<? extends T>, ? extends Observable<? extends R>> selector)`. Can you give some suggestion?