Extraño comportamiento de componer y ObservableTransformer en RxJava cuando el genérico pasado se extiende

Al intentar jugar con componer en RxJava2 encontré algo que realmente no puedo explicar.

Supongamos que tenemos los siguientes dos methods estáticos:

object RxUtils { fun <T> handleResponse(): ObservableTransformer<T, T> { return ObservableTransformer { observable -> observable.flatMap { t -> ObservableFromCallable.fromCallable(object: Callable<T>{ override fun call(): T { return t } }) } } } fun <T: GenericResponse> handleResponse2(): ObservableTransformer<T, T> { return ObservableTransformer { observable -> observable.flatMap { t -> ObservableFromCallable.fromCallable(object: Callable<T>{ override fun call(): T { return t } }) } } }} 

handleResponse y handleResponse2 son iguales, la diferencia es que en handleResponse2 T extiende GenericResponse.

El problema es que cuando uso handleResponse2 en compose, el object que proviene de compose no es un Observable y no puedo usar ningún operador Observable.

Ejemplo:

 fun <T: GenericResponse> loadApi2(observable: Observable<T>): Observable<T> { return observable .compose(RxUtils.handleResponse2()) // here is blocked, can't use any other operator } fun <T: GenericResponse> loadApi(observable: Observable<T>): Observable<T> { return observable .compose(RxUtils.handleResponse()) //works fine, I can use other operators such as compose, subscribeOn etc }