internal string LTRReplace(Regex regex, string input, BaseMachine.MatchAppendEvaluator evaluator, int count, int startat, bool needs_groups_or_captures)
        {
            this.needs_groups_or_captures = needs_groups_or_captures;
            Match match = this.Scan(regex, input, startat, input.Length);

            if (!match.Success)
            {
                return(input);
            }
            StringBuilder stringBuilder = new StringBuilder(input.Length);
            int           num           = startat;
            int           num2          = count;

            stringBuilder.Append(input, 0, num);
            while (count == -1 || num2-- > 0)
            {
                if (match.Index < num)
                {
                    throw new SystemException("how");
                }
                stringBuilder.Append(input, num, match.Index - num);
                evaluator(match, stringBuilder);
                num   = match.Index + match.Length;
                match = match.NextMatch();
                if (!match.Success)
                {
IL_AA:
                    stringBuilder.Append(input, num, input.Length - num);
                    return(stringBuilder.ToString());
                }
            }
            goto IL_AA;
        }
 internal string LTRReplace(Regex regex, string input, BaseMachine.MatchAppendEvaluator evaluator, int count, int startat)
 {
     return(this.LTRReplace(regex, input, evaluator, count, startat, true));
 }