public static bool AllDone(Monitor[] monitors)
 {
     foreach (var m in monitors)
         if (m.Progress != Monitor.State.Done)
             return false;
     return true;
 }
 public static IEnumerator Build(MonoBehaviour target, params IEnumerator[] coroutines)
 {
     var monitors = new Monitor[coroutines.Length];
     for (var i = 0; i < coroutines.Length; i++)
         target.StartCoroutine(monitors[i] = new Monitor(coroutines[i]));
     while (!AllDone(monitors))
         yield return null;
 }