/** * Creates and returns a new {@code TestSubject}. * * @param <T> the value type * @param scheduler a {@link TestScheduler} on which to operate this Subject * @return the new {@code TestSubject} */ public static <T> TestSubject<T> create(TestScheduler scheduler) { final SubjectSubscriptionManager<T> state = new SubjectSubscriptionManager<T>(); state.onAdded = new Action1<SubjectObserver<T>>() { @Override public void call(SubjectObserver<T> o) { o.emitFirst(state.get(), state.nl); } }; state.onTerminated = state.onAdded; return new TestSubject<T>(state, state, scheduler); }