anchor.diff:         function NewQuest(Node:PFLRENode;Kind:longint):PFLRENode;
          function NewExact(Node:PFLRENode;MinCount,MaxCount,Kind:longint):PFLRENode;
   
  -       function OptimizeNode(NodeEx:PPFLRENode):boolean;
  +       function OptimizeNode(StartNodeEx:PPFLRENode):boolean;
   
          procedure Parse;
   
  
positive.code:    if (rfUTF8 in Flags) and ((LowerCaseUnicodeChar>=$80) or (UpperCaseUnicodeChar>=$80)) then begin
      result:=NewAlt(NewCharEx(LowerCaseUnicodeChar),NewCharEx(UpperCaseUnicodeChar));
     end else begin
      result:=NewNode(ntCHAR,nil,nil,nil,NewCharClass([ansichar(byte(LowerCaseUnicodeChar)),ansichar(byte(UpperCaseUnicodeChar))]));
     end;
    end else begin
     if (rfUTF8 in Flags) and (UnicodeChar>=$80) then begin
      result:=NewCharEx(UnicodeChar);
     end else begin
      result:=NewNode(ntCHAR,nil,nil,nil,NewCharClass([ansichar(byte(UnicodeChar))]));
     end;
    end;
   end;
  
negative.code:            UnicodeChar:=byte(ansichar(Source[SourcePosition]));
             LowerCaseUnicodeChar:=UnicodeToLower(UnicodeChar);
             UpperCaseUnicodeChar:=UnicodeToUpper(UnicodeChar);
             TemporaryNode:=NewNode(ntCHAR,nil,nil,NewCharClass([ansichar(byte(LowerCaseUnicodeChar)),ansichar(byte(UpperCaseUnicodeChar))]));
            end else begin
             TemporaryNode:=NewNode(ntCHAR,nil,nil,NewCharClass([Source[SourcePosition]]));
             inc(SourcePosition);
            end;
           end;
  