static ValueStore.Node GetNodeRecursive(ValueStore.Node current, Match match, int index) { Capture next; var groupIndex = FindNextCapture(match, index, out next); if (groupIndex < 0) { Debug.LogWarning("Unexpected end of captures in match: " + match); return(current); } else if (groupIndex == 2) { var child = current.GetOrCreateChild(next.Value); return(GetNodeRecursive(child, match, next.Index + next.Length)); } else if (groupIndex == 3 || groupIndex == 4) { var isQuoted = (groupIndex == 3); var variant = current.GetOrCreateVariant(ProcessQuotedString(next.Value, isQuoted)); return(GetNodeRecursive(variant, match, next.Index + next.Length)); } else { return(current); } }