protected IEnumerator Execute() {
IEnumerator enumerator = null;
OnExecuteDelegate d;
for( int ix = 0; ix < executionList.Count; ++ix ) {
if (cancelled) yield break;
Progress = (float)ix / (float)executionList.Count;
d = executionList[ ix ];
enumerator = d( this );
if( ProducedError ) {
BroadcastOnComplete();
yield break;
}
while( enumerator.MoveNext() ) {
if (cancelled) yield break;
yield return enumerator.Current;
}
}
BroadcastOnComplete();
}
}