anchor.diff:  end;
   
   procedure TFLREUnicodeCharClass.AddRange(Lo,Hi:longword;IgnoreCase:boolean=false);
  -var Range:TFLREUnicodeCharClassRange;
  -    c,cl,cu:longword;
  -    NeedToCanonicalize:boolean;
  +var Range,TempRange:TFLREUnicodeCharClassRange;
  +    c,cl,cu,rl,ru:longword;
  +    Temp,OtherTemp:TFLREUnicodeCharClass;
  +    i:longint;
   begin
    if IgnoreCase then begin
  -  NeedToCanonicalize:=false;
  -  for c:=Lo to Hi do begin
  -   cl:=UnicodeToLower(c);
  -   cu:=UnicodeToUpper(c);
  -   if (cl<>cu) or (cl<>c) or (cu<>c) then begin
  -    NeedToCanonicalize:=true;
  -    break;
  -   end;
  -  end;
  -  if NeedToCanonicalize then begin
  -   for c:=Lo to Hi do begin
  -    cl:=UnicodeToLower(c);
  -    cu:=UnicodeToUpper(c);
  -    if (cl=cu) and (cl=c) then begin
  -     AddRange(c,c,false);
  -    end else begin
  -     AddRange(cl,cl,false);
  -     AddRange(cu,cu,false);
  -     if (cl<>c) and (cu<>c) then begin
  -      AddRange(c,c,false);
  -     end;
  -    end;
  -   end;
  -  end else begin
  -   AddRange(Lo,Hi,false);
  +  AddRange(Lo,Hi,false);
  +  Temp:=TFLREUnicodeCharClass.Create;
  +  try
  +   OtherTemp:=TFLREUnicodeCharClass.Create;
  +   try
  +    OtherTemp.AddRange(Lo,Hi,false);
  +    Temp.Intersection(OtherTemp,LowerUpperCaseUnicodeCharClass);
  +   finally
  +    OtherTemp.Free;
  +   end;
  +   TempRange:=Temp.First;
  +   while assigned(TempRange) do begin
  +    for c:=TempRange.Lo to TempRange.Hi do begin
  +     cl:=UnicodeToLower(c);
  +     cu:=UnicodeToUpper(c);
  +     if cl<>c then begin
  +      AddRange(cl,cl,false);
  +     end;
  +     if cu<>c then begin
  +      AddRange(cu,cu,false);
  +     end;
  +    end;
  +    TempRange:=TempRange.Next;
  +   end;
  +  finally
  +   Temp.Free;
     end;
    end else begin
     Range:=First;
  
positive.code:        function EqualsTo(OtherObject:TFLREUnicodeCharClass):boolean;
       end;
  
  constructor TFLREUnicodeCharClassRange.Create(ACharClass:TFLREUnicodeCharClass;ALo,AHi:longword);
  begin
   inherited Create;
  
negative.code:   result:=nil;
    try
     IgnoreCase:=CanBeAlreadyCanonicalized and (rfCASEINSENSITIVE in Flags);
     result:=TFLREUnicodeCharClass.Create;
     if (SourcePosition<=SourceLength) and (Source[SourcePosition] in ['0'..'9']) then begin
      i:=0;
      while (SourcePosition<=SourceLength) and (Source[SourcePosition] in ['0'..'9']) do begin
  