anchor.diff:    TConverters = class sealed(TObject)
   
     strict private
  -{$IFDEF DELPHI}
  -    // lifted from DUnitX.Utils.
  -    class function SplitString(const S, Delimiters: string)
  +    class function SplitString(const S: String; Delimiter: Char)
         : THashLibStringArray; static;
   
  -{$ENDIF DELPHI}
   {$IFDEF DEBUG}
       class procedure Check(a_in: THashLibByteArray;
         a_in_size, a_out_size: Int32); overload; static;
  -
   {$ENDIF DEBUG}
       class procedure swap_copy_str_to_u32(src: Pointer; src_index: Int32;
         dest: Pointer; dest_index: Int32; length: Int32); static;
  
positive.code:   result := a_encoding.GetBytes(a_in);
  end;
  
  {$IFDEF DELPHI}
  
  class function TConverters.SplitString(const S, Delimiters: string)
    : THashLibStringArray;
  var
    StartIdx, FoundIdx, SplitPoints, CurrentSplit, I: Int32;
  begin
    result := Nil;
  
  {$IFNDEF NEXTGEN}
    if S <> '' then
    begin
      { Determine the length of the resulting array }
      SplitPoints := 0;
      for I := 1 to System.length(S) do
        if IsDelimiter(Delimiters, S, I) then
          System.Inc(SplitPoints);
  
      System.SetLength(result, SplitPoints + 1);
  
      { Split the string and fill the resulting array }
      StartIdx := 1;
      CurrentSplit := 0;
      repeat
        FoundIdx := FindDelimiter(Delimiters, S, StartIdx);
        if FoundIdx <> 0 then
        begin
          result[CurrentSplit] := System.Copy(S, StartIdx, FoundIdx - StartIdx);
          System.Inc(CurrentSplit);
          StartIdx := FoundIdx + 1;
        end;
      until CurrentSplit = SplitPoints;
  
      // copy the remaining part in case the string does not end in a delimiter
      result[SplitPoints] := System.Copy(S, StartIdx,
        System.length(S) - StartIdx + 1);
    end;
  {$ELSE}
    if S <> string.Empty then
    begin
      { Determine the length of the resulting array }
      SplitPoints := 0;
      for I := 0 to S.length - 1 do
        if S.IsDelimiter(Delimiters, I) then
          Inc(SplitPoints);
  
      System.SetLength(result, SplitPoints + 1);
  
      { Split the string and fill the resulting array }
      StartIdx := 0;
      CurrentSplit := 0;
      repeat
        FoundIdx := S.IndexOfAny(Delimiters.ToCharArray, StartIdx);
        if FoundIdx <> -1 then
        begin
          result[CurrentSplit] := S.SubString(StartIdx, FoundIdx - StartIdx);
          Inc(CurrentSplit);
          StartIdx := FoundIdx + 1;
        end;
      until CurrentSplit = SplitPoints;
  
      // copy the remaining part in case the string does not end in a delimiter
      result[SplitPoints] := S.SubString(StartIdx, S.length - StartIdx + 1);
    end;
  
  {$ENDIF NEXTGEN}
  end;
  
  {$ENDIF DELPHI}
  
  end.
  
negative.code: uses
  {$IFDEF HAS_UNITSCOPE}
    System.Classes,
    System.StrUtils,
    System.SysUtils,
  {$ELSE}
    Classes,
    StrUtils,
    SysUtils,
  {$ENDIF HAS_UNITSCOPE}
    HlpHashLibTypes,
  