private static IObservable <Unit> DelayInternal(float duration, IScheduler scheduler)
 {
     return(Observable
            .Defer(() => Observable.Return(scheduler.Now))
            .ContinueWith(start =>
                          RxExtensions.FromMicroCoroutineWithInitialValue <Unit>((observer, token) => DelayCoroutine(start, duration, scheduler, observer, token), Unit.Default)
                          ));
 }
 private static IObservable <float> PlayInternal(IAnimator animator, float distance, IScheduler scheduler)
 {
     return(Observable
            .Defer(() => Observable.Return(scheduler.Now))
            .ContinueWith(start =>
                          RxExtensions.FromMicroCoroutineWithInitialValue((observer, token) => AnimationCoroutine(animator, start, distance, scheduler, observer, token), animator.CalcPosition(scheduler.Now - start, distance))
                          ));
 }