System.Text.RegularExpressions.RegexCharClass.ParseRecursive C# (CSharp) Method

ParseRecursive() private static method

private static ParseRecursive ( string charClass, int start ) : RegexCharClass
charClass string
start int
return RegexCharClass
        private static RegexCharClass ParseRecursive(string charClass, int start) {
            int mySetLength = charClass[start+SETLENGTH];
            int myCategoryLength = charClass[start+CATEGORYLENGTH];
            int myEndPosition = start + SETSTART + mySetLength + myCategoryLength;
            
            ArrayList ranges = new ArrayList(mySetLength);
            int i=start+SETSTART;
            int end = i + mySetLength; 
            while (i<end) {
                char first = charClass[i];
                i++;

                char last;
                if (i < end)
                    last = (char) (charClass[i] - 1);
                else
                    last = Lastchar;
                i++;
                ranges.Add(new SingleRange(first, last));
            }

            RegexCharClass sub = null;
            if (charClass.Length > myEndPosition)
                sub = ParseRecursive(charClass, myEndPosition);
            
            return new RegexCharClass(charClass[start+FLAGS] == 1, ranges, new StringBuilder(charClass.Substring(end, myCategoryLength)), sub);
        }