I think this signature should be `Observable<R> cast(Class<R> klass)`. Then you can use `klass.cast(t)` and won't need to suppress unchecked warnings. Also, it will mean that a `ClassCastException` will be generated here rather than at some random place downstream.

My signature will need to be adjusted by the co/contra-variance police, of course :)