anchor.diff:            inc(SourcePosition);
            end;
            'A':begin
  -          if rfMULTILINE in Flags then begin
  -           result:=NewNode(ntBOL,nil,nil,nil,0);
  -          end else begin
  -           result:=NewNode(ntBOT,nil,nil,nil,0);
  -          end;
  +          result:=NewNode(ntBOT,nil,nil,nil,0);
             inc(SourcePosition);
            end;
            'Z':begin
  -          if rfMULTILINE in Flags then begin
  -           result:=NewNode(ntEOL,nil,nil,nil,0);
  -          end else begin
  -           result:=NewNode(ntEOT,nil,nil,nil,0);
  -          end;
  -          inc(SourcePosition);
  -         end;
  -         'k':begin
  -          result:=NewNode(ntBOT,nil,nil,nil,0);
  -          inc(SourcePosition);
  -         end;
  -         'z':begin
             result:=NewNode(ntEOT,nil,nil,nil,0);
             inc(SourcePosition);
            end;
  
positive.code:            FreeAndNil(UnicodeCharClass);
            end;
           end;
           'g':begin
            inc(SourcePosition);
            if (SourcePosition<=SourceLength) and (Source[SourcePosition]='{') then begin
             inc(SourcePosition);
             Name:='';
             while (SourcePosition<=SourceLength) and (Source[SourcePosition] in ['0'..'9','A'..'Z','a'..'z','_']) do begin
              Name:=Name+Source[SourcePosition];
              inc(SourcePosition);
             end;
             if (SourcePosition<=SourceLength) and (Source[SourcePosition]='}') then begin
              inc(SourcePosition);
              result:=NewBackReferencePerName(Name);
             end else begin
  
negative.code:      OldFlags:TFLREFlags;
       Name,TemporaryString:ansistring;
       TemporaryNode:PFLRENode;
       TerminateChar:ansichar;
   begin
    result:=nil;
    try
  