public Coroutine StartCoroutine(IEnumerable routine)
 {
     var r = new Coroutine(routine);
     Coroutines.AddLast(r);
     r.Resume();
     return r;
 }
 public bool Step(Coroutine routine, TimeSpan time)
 {
     return Condition();
 }
 public bool Step(Coroutine routine, TimeSpan time)
 {
     if (Delay <= TimeSpan.Zero) return true;
     Delay -= time;
     return false;
 }