src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T> Observable<T> unsafeCreate(ObservableSource<T> onSubscribe) {
        ObjectHelper.requireNonNull(onSubscribe, "onSubscribe is null");
        if (onSubscribe instanceof Observable) {
            throw new IllegalArgumentException("unsafeCreate(Observable) should be upgraded");
        }
        return RxJavaPlugins.onAssembly(new ObservableFromUnsafeSource<T>(onSubscribe));
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T> Observable<T> unsafeCreate(ObservableSource<T> onSubscribe) {
        ObjectHelper.requireNonNull(onSubscribe, "onSubscribe is null");
        if (onSubscribe instanceof Observable) {
            throw new IllegalArgumentException("unsafeCreate(Observable) should be upgraded");
        }
        return RxJavaPlugins.onAssembly(new ObservableFromUnsafeSource<T>(onSubscribe));
    }
Create an Observable by wrapping an ObservableSource <em>which has to be implemented according
to the Reactive-Streams-based Observable specification by handling
disposal correctly; no safeguards are provided by the Observable itself</em>.
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code unsafeCreate} by default doesn't operate on any particular {@link Scheduler}.</dd>
</dl>
@param <T> the value type emitted
@param onSubscribe the ObservableSource instance to wrap
@return the new Observable instance