private bool pathToDoneFrom(string searchFrom)
{
var foundPath = false;
PathToDone.Add(searchFrom);
var possiblePaths =
witd.SelectNodes(
string.Format(
"descendant::TRANSITIONS/TRANSITION[@from='{0}' and (@to!='Removed' and @to!='Deleted')]",
searchFrom));
foreach (XmlNode path in possiblePaths)
{
var to = path.Attributes.GetNamedItem("to").Value;
if (closedStates.Contains(to, StringComparer.OrdinalIgnoreCase))
{
PathToDone.Add(to);
foundPath = true;
break;
}
}
if (foundPath == false)
{
foreach (XmlNode path in possiblePaths)
{
var from = path.Attributes.GetNamedItem("to").Value;
foundPath = pathToDoneFrom(from);
if (foundPath)
{
break;
}
}
}
return foundPath;
}