src/main/java/io/reactivex/Flowable.java
@CheckReturnValue
    @NonNull
    @BackpressureSupport(BackpressureKind.NONE)
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T> Flowable<T> unsafeCreate(Publisher<T> onSubscribe) {
        ObjectHelper.requireNonNull(onSubscribe, "onSubscribe is null");
        if (onSubscribe instanceof Flowable) {
            throw new IllegalArgumentException("unsafeCreate(Flowable) should be upgraded");
        }
        return RxJavaPlugins.onAssembly(new FlowableFromPublisher<T>(onSubscribe));
    }
@CheckReturnValue
    @NonNull
    @BackpressureSupport(BackpressureKind.NONE)
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T> Flowable<T> unsafeCreate(Publisher<T> onSubscribe) {
        ObjectHelper.requireNonNull(onSubscribe, "onSubscribe is null");
        if (onSubscribe instanceof Flowable) {
            throw new IllegalArgumentException("unsafeCreate(Flowable) should be upgraded");
        }
        return RxJavaPlugins.onAssembly(new FlowableFromPublisher<T>(onSubscribe));
    }
Create a Flowable by wrapping a Publisher <em>which has to be implemented according
to the Reactive-Streams specification by handling backpressure and
cancellation correctly; no safeguards are provided by the Flowable itself</em>.
<dl>
<dt><b>Backpressure:</b></dt>
<dd>This operator is a pass-through for backpressure and the behavior is determined by the
provided Publisher implementation.</dd>
<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 Publisher instance to wrap
@return the new Flowable instance
@throws IllegalArgumentException if {@code onSubscribe} is a subclass of {@code Flowable}; such
instances don't need conversion and is possibly a port remnant from 1.x or one should use {@link #hide()}
instead.