anchor.diff:       continue;
       end;
       opBOL:begin
  -     if rfUTF8 in Flags then begin
  -      OtherPosition:=Position;
  -      UTF8PtrDec(ThreadLocalState.Input,ThreadLocalState.InputLength,OtherPosition);
  -     end else begin
  -      OtherPosition:=Position-1;
  -     end;
  -     if Position<0 then begin
  -      Instruction:=Instruction^.Next;
  -      continue;
  -     end else begin
  -      if rfUTF8 in Flags then begin
  -       CurrentChar:=UTF8PtrCodeUnitGetChar(ThreadLocalState.Input,ThreadLocalState.InputLength,OtherPosition);
  -       case CurrentChar of
  -        $0a,$0c,$0d,$85,$2028,$2029:begin
  -         Instruction:=Instruction^.Next;
  -         continue;
  -        end;
  -       end;
  -      end else begin
  -       case byte(ansichar(ThreadLocalState.Input[OtherPosition])) of
  -        $0a,$0d,$85:begin
  -         Instruction:=Instruction^.Next;
  -         continue;
  -        end;
  -       end;
  -      end;
  -      DecRef(SubMatches);
  -      break;
  -     end;
  -    end;
  -    opEOL:begin
  -     if rfUTF8 in Flags then begin
  -      OtherPosition:=Position;
  -      UTF8PtrSafeInc(ThreadLocalState.Input,ThreadLocalState.InputLength,OtherPosition);
  -     end else begin
  -      OtherPosition:=Position+1;
  -     end;
  -     if OtherPosition>=ThreadLocalState.InputLength then begin
  -      Instruction:=Instruction^.Next;
  -      continue;
  -     end else begin
  -      if rfUTF8 in Flags then begin
  -       CurrentChar:=UTF8PtrCodeUnitGetChar(ThreadLocalState.Input,ThreadLocalState.InputLength,OtherPosition);
  -       case CurrentChar of
  -        $0a,$0c,$0d,$85,$2028,$2029:begin
  -         Instruction:=Instruction^.Next;
  -         continue;
  -        end;
  -       end;
  -      end else begin
  -       case byte(ansichar(ThreadLocalState.Input[OtherPosition])) of
  -        $0a,$0d,$85:begin
  -         Instruction:=Instruction^.Next;
  -         continue;
  -        end;
  -       end;
  -      end;
  -      DecRef(SubMatches);
  -      break;
  -     end;
  -    end;
  -    opBOT:begin
  -     if Position=0 then begin
  +     if Satisfy(sfEmptyBeginLine,Position) then begin
         Instruction:=Instruction^.Next;
         continue;
        end else begin
  
positive.code:       break;
       end;
      end;
      opEOT:begin
       if rfUTF8 in Flags then begin
        OtherPosition:=Position;
        UTF8PtrSafeInc(ThreadLocalState.Input,ThreadLocalState.InputLength,OtherPosition);
       end else begin
        OtherPosition:=Position+1;
       end;
       if OtherPosition>=ThreadLocalState.InputLength then begin
        Instruction:=Instruction^.Next;
        continue;
       end else begin
  
negative.code:       break;
       end;
      end;
      opBOT:begin
       if Satisfy(sfEmptyBeginText,Position) then begin
        Instruction:=Instruction^.Next;
        continue;
       end else begin
        DecRef(SubMatches);
        break;
       end;
      end;
      opEOT:begin
       if Satisfy(sfEmptyEndText,Position) then begin
        Instruction:=Instruction^.Next;
        continue;
       end else begin
        DecRef(SubMatches);
        break;
       end;
      end;
      opBRK:begin
       if Satisfy(sfEmptyWordBoundary,Position) then begin
        Instruction:=Instruction^.Next;
        continue;
       end else begin
        DecRef(SubMatches);
        break;
       end;
      end;
      opNBRK:begin
       if Satisfy(sfEmptyNonWordBoundary,Position) then begin
        Instruction:=Instruction^.Next;
        continue;
       end else begin
  