internal override string ToStringHelper(int level, HashSet<InteriorNode> visited) {
var retval = "";
retval += string.Format("{0}\n", ToStringSelf()).Indent(2 * level);
if (visited.Contains(_node)) {
retval += "Already Visited".Indent(2 * level);
return retval;
}
visited.Add(_node);
// foreach (var option in Options) {
for (var i = 0; i < Options.Count; i++) {
var option = Options[i];
if (Options.Count > 1) {
retval += string.Format("Alternative {0}:\n", i).Indent(2 * level);
}
retval += option.ToStringHelper(level + 1, visited);
}
//int leafIndex = 0;
//int symbolIndex = 0;
//for (int i = 0; i < _localSentence.Count; i++) {
// var word = _localSentence[i];
// if (word.IsTerminal) {
// var leaf = LeafChildren[leafIndex];
// leafIndex++;
// retval += leaf.ToStringHelper(level);
// } else {
// var symbol = SymbolChildren[symbolIndex];
// symbolIndex++;
// retval += symbol.ToStringHelper(level);
// }
//}
return retval;
}