private bool TryMatch (ref int ref_ptr, int pc) { Reset (); int ptr = ref_ptr; marks [groups [0]].Start = ptr; if (Eval (Mode.Match, ref ptr, pc)) { marks [groups [0]].End = ptr; ref_ptr = ptr; return true; } return false; }