void NonDeterministicChoice(out Process proc, string locality)
 {
     NonDeterministicChoice ndc = new NonDeterministicChoice(); Process pc = null;
     ParallelComposition(out pc, locality);
     ndc.Add(pc);
     while (la.kind == 11) {
     Get();
     ParallelComposition(out pc, locality);
     ndc.Add(pc);
     }
     if (ndc.Processes.Count == 1) {proc = ndc.Processes[0]; } else {proc = ndc; CopyPos(proc,ndc.Processes[0], t);}
 }
 public virtual void Visit(NonDeterministicChoice node)
 {
 }
 public override void Visit(NonDeterministicChoice node)
 {
     List<string> children = PopChildren();
     List<string> procChildren = new List<string>(children);
     procChildren.RemoveRange(0,2);
     Return(CheckProc("(" + Join(" + ", procChildren), children) + ")");
 }
 void NonDeterministicChoice(out Process proc)
 {
     Process pc; NonDeterministicChoice ndc = new NonDeterministicChoice();
     ParallelComposition(out pc);
     ndc.Add(pc);
     while (la.kind == 14) {
     Get();
     ParallelComposition(out pc);
     ndc.Add(pc);
     }
     if (ndc.Processes.Count == 1) {proc = ndc.Processes[0]; }else {proc = ndc; CopyPos(proc,ndc.Processes[0], t);}
 }
 public virtual string Format(NonDeterministicChoice ndc)
 {
     return SurroundWithParens(Join("+", ndc), ndc.ParenCount) + Format(ndc.PreProcessActions) + Format(ndc.ActionRestrictions);
 }