anchor.diff:           end;
            CapturesToSubMatchesMap[CountCaptures]:=Value;
            inc(CountCaptures);
  +         NamedGroupStringIntegerPairHashMap.Add(IntToStr(Value),Value);
  +         if NamedGroupStringList.IndexOf(IntToStr(Value))<0 then begin
  +          NamedGroupStringList.Add(IntToStr(Value));
  +         end else begin
  +          raise EFLRE.Create('Duplicate named group');
  +         end;
            GroupIndexIntegerStack.Add(Value);
            try
             result:=NewNode(ntPAREN,ParseDisjunction,nil,nil,Value);
  
positive.code:   except
     FreeAndNil(result);
     raise;
    end;
   end;
   function ParseAtom:PFLRENode;
  
negative.code:            end;
            finally
             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
              raise EFLRE.Create('Syntax error');
             end;
            end else begin
             raise EFLRE.Create('Syntax error');
            end;
           end;
           else begin
  