anchor.diff:      end else begin
        raise EFLRE.Create('Syntax error');
       end;
  -    if Done or assigned(result) or ((SourcePosition<=SourceLength) and (Source[SourcePosition] in ['|',')'])) then begin
  +    if Done or assigned(result) or ((SourcePosition<=SourceLength) and (Source[SourcePosition] in ['|',')',#0])) then begin
        break;
       end else begin
        SkipFreeSpacingWhiteSpace;
  
positive.code:  function NewNumberedGroup:PFLRENode;
   var Value:longint;
   begin
    Value:=CountInternalCaptures;
    inc(CountInternalCaptures);
    if (CountCaptures+1)>length(CapturesToSubMatchesMap) then begin
     SetLength(CapturesToSubMatchesMap,(CountCaptures+1)*2);
    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);
    finally
     GroupIndexIntegerStack.Delete(GroupIndexIntegerStack.Count-1);
    end;
   end;
   function NewNamedGroup(const Name:ansistring):PFLRENode;
   var Value:longint;
   begin
    Value:=CountInternalCaptures;
    inc(CountInternalCaptures);
    if (CountCaptures+1)>length(CapturesToSubMatchesMap) then begin
     SetLength(CapturesToSubMatchesMap,(CountCaptures+1)*2);
    end;
    CapturesToSubMatchesMap[CountCaptures]:=Value;
    inc(CountCaptures);
    NamedGroupStringIntegerPairHashMap.Add(Name,Value);
    if NamedGroupStringList.IndexOf(Name)<0 then begin
     NamedGroupStringList.Add(Name);
    end else begin
     raise EFLRE.Create('Duplicate named group');
    end;
    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);
    GroupNameStringStack.Add(Name);
    try
     result:=NewNode(ntPAREN,ParseDisjunction,nil,nil,Value);
    finally
     GroupIndexIntegerStack.Delete(GroupIndexIntegerStack.Count-1);
     GroupNameStringStack.Delete(GroupNameStringStack.Count-1);
    end;
   end;
   function NewBackReferencePerIndex(const Group:longint):PFLRENode;
  
negative.code:     end;
      if SourcePosition<=SourceLength then begin
       case Source[SourcePosition] of
        '|',')',#0:begin
         break;
        end;
       end;
  