internal void AddCharClass(RegexCharClass cc) {
int i;
Debug.Assert(cc.CanMerge && this.CanMerge, "Both character classes added together must be able to merge" );
if (!cc._canonical) {
// if the new char class to add isn't canonical, we're not either.
_canonical = false;
}
else if (_canonical && RangeCount() > 0 && cc.RangeCount() > 0 && cc.GetRangeAt(0)._first <= GetRangeAt(RangeCount() - 1)._last)
_canonical = false;
for (i = 0; i < cc.RangeCount(); i += 1) {
_rangelist.Add(cc.GetRangeAt(i));
}
_categories.Append(cc._categories.ToString());
}