src/main/java/io/reactivex/Maybe.java
@CheckReturnValue
    @NonNull
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T, D> Maybe<T> using(Callable<? extends D> resourceSupplier,
            Function<? super D, ? extends MaybeSource<? extends T>> sourceSupplier,
                    Consumer<? super D> resourceDisposer, boolean eager) {
        ObjectHelper.requireNonNull(resourceSupplier, "resourceSupplier is null");
        ObjectHelper.requireNonNull(sourceSupplier, "sourceSupplier is null");
        ObjectHelper.requireNonNull(resourceDisposer, "disposer is null");
        return RxJavaPlugins.onAssembly(new MaybeUsing<T, D>(resourceSupplier, sourceSupplier, resourceDisposer, eager));
    }
@CheckReturnValue
    @NonNull
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T, D> Maybe<T> using(Callable<? extends D> resourceSupplier,
            Function<? super D, ? extends MaybeSource<? extends T>> sourceSupplier,
                    Consumer<? super D> resourceDisposer, boolean eager) {
        ObjectHelper.requireNonNull(resourceSupplier, "resourceSupplier is null");
        ObjectHelper.requireNonNull(sourceSupplier, "sourceSupplier is null");
        ObjectHelper.requireNonNull(resourceDisposer, "disposer is null");
        return RxJavaPlugins.onAssembly(new MaybeUsing<T, D>(resourceSupplier, sourceSupplier, resourceDisposer, eager));
    }
@ CheckReturnValue @ NonNull @ SchedulerSupport ( SchedulerSupport . NONE ) public static < T , D > Maybe < T > using ( Callable < ? extends D > resourceSupplier , Function < ? super D , ? extends MaybeSource < ? extends T > > sourceSupplier , Consumer < ? super D > resourceDisposer , boolean eager ) { ObjectHelper . requireNonNull ( resourceSupplier , "resourceSupplier is null" ) ; ObjectHelper . requireNonNull ( sourceSupplier , "sourceSupplier is null" ) ; ObjectHelper . requireNonNull ( resourceDisposer , "disposer is null" ) ; return RxJavaPlugins . onAssembly ( new MaybeUsing < T , D > ( resourceSupplier , sourceSupplier , resourceDisposer , eager ) ) ; }
Constructs a Maybe that creates a dependent resource object which is disposed of just before
termination if you have set {@code disposeEagerly} to {@code true} and a downstream dispose() does not occur
before termination. Otherwise resource disposal will occur on call to dispose().  Eager disposal is
particularly appropriate for a synchronous Maybe that reuses resources. {@code disposeAction} will
only be called once per subscription.
<p>
<img width="640" height="400" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/using.png" alt="">
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code using} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>

@param <T> the element type of the generated MaybeSource
@param <D> the type of the resource associated with the output sequence
@param resourceSupplier
the factory function to create a resource object that depends on the Maybe
@param sourceSupplier
the factory function to create a MaybeSource
@param resourceDisposer
the function that will dispose of the resource
@param eager
if {@code true} then disposal will happen either on a dispose() call or just before emission of
a terminal event ({@code onComplete} or {@code onError}).
@return the Maybe whose lifetime controls the lifetime of the dependent resource object
@see <a href="http://reactivex.io/documentation/operators/using.html">ReactiveX operators documentation: Using</a>
Constructs a Maybe that creates a dependent resource object which is disposed of just before termination if you have set { @code disposeEagerly } to { @code true } and a downstream dispose () does not occur before termination . Otherwise resource disposal will occur on call to dispose () . Eager disposal is particularly appropriate for a synchronous Maybe that reuses resources . { @code disposeAction } will only be called once per subscription . <p > <img width = 640 height = 400 src = https : // raw . github . com / wiki / ReactiveX / RxJava / images / rx - operators / using . png alt = > <dl > <dt > <b > Scheduler : < / b > < / dt > <dd > { @code using } does not operate by default on a particular { @link Scheduler } . < / dd > < / dl >