@startuml
interface ObservableSource<T> {
{abstract} void subscribe(Observer<? super T> observer)
}
abstract class Observable<T> {
{abstract} void subscribeActual(Observer<? super T> observer)
}

ObservableSource <|.. Observable

abstract class Subject<T>
abstract class ConnectableObservable<T>
class ObservableCreate<T>
class ObservableFilter<T>
class ObservableMap<T>
class ObservableXxx

Observable <|-- Subject
Observable <|-- ConnectableObservable
Observable <|-- ObservableCreate
Observable <|-- ObservableFilter
Observable <|-- ObservableMap
Observable <|-- ObservableXxx

@enduml