private void Backtrack (int cp) { Debug.Assert (cp > mark_start, "Regex", "Attempt to backtrack forwards"); for (int i = 0; i < groups.Length; ++ i) { int m = groups [i]; while (cp <= m) m = marks [m].Previous; groups [i] = m; } }