private void RemoveDisjunctions(Action a, List <List <Formula> > lOptions, int iOption, CompoundFormula cfAnd, List <Action> lNoDisjunctions, ref int iIndex) { if (iOption == lOptions.Count) { Action aNew = a.Clone(); aNew.Name += "." + iIndex; iIndex++; aNew.Preconditions = cfAnd; lNoDisjunctions.Add(aNew); } else { foreach (Formula fOption in lOptions[iOption]) { CompoundFormula cfNew = (CompoundFormula)cfAnd.Clone(); cfNew.AddOperand(fOption); RemoveDisjunctions(a, lOptions, iOption + 1, cfNew, lNoDisjunctions, ref iIndex); } } }