public override IEnumerator<NodeResult> NodeTask()
{
var rng = new System.Random ();
var n = children.Count;
while (n > 1) {
n--;
var k = rng.Next (n + 1);
var value = children [k];
children [k] = children [n];
children [n] = value;
}
var task = base.NodeTask ();
while (task.MoveNext()) {
yield return task.Current;
}
}