private void Backtrack()
{
int newpos = runtrack[runtrackpos++];
#if DEBUG
if (runmatch.Debug)
{
if (newpos < 0)
Debug.WriteLine(" Backtracking (back2) to code position " + (-newpos));
else
Debug.WriteLine(" Backtracking to code position " + newpos);
}
#endif
if (newpos < 0)
{
newpos = -newpos;
SetOperator(_code._codes[newpos] | RegexCode.Back2);
}
else
{
SetOperator(_code._codes[newpos] | RegexCode.Back);
}
// When branching backward, ensure storage
if (newpos < _codepos)
EnsureStorage();
_codepos = newpos;
}