anchor.diff:  interface
   
   uses
  +{$IFDEF DELPHIXE7_UP}
  +  System.Classes,
  +  System.SysUtils,
  +  System.Threading,
  +{$ENDIF DELPHIXE7_UP}
     HlpKDF,
     HlpBits,
     HlpIHash,
  
positive.code:   end;
  end;
  
  procedure TPBKDF_Argon2NotBuildInAdapter.Initialize(const APassword
    : THashLibByteArray; AOutputLength: Int32);
  var
  
negative.code:   end;
  end;
  
  {$IFDEF DELPHIXE7_UP}
  
  procedure TPBKDF_Argon2NotBuildInAdapter.FillMemoryBlocks;
  
    function CreateTask(APosition: TPosition): ITask;
    begin
      result := TTask.Create(
        procedure()
        begin
          FillSegment(APosition);
        end);
    end;
  
  var
    LIdx, LJdx, LKdx, LTaskIdx: Int32;
    LPosition: TPosition;
    LArrayTasks: array of ITask;
  begin
    System.SetLength(LArrayTasks, FParameters.Lanes);
    for LIdx := 0 to System.Pred(FParameters.Iterations) do
    begin
      for LJdx := 0 to System.Pred(ARGON2_SYNC_POINTS) do
      begin
        for LKdx := 0 to System.Pred(FParameters.Lanes) do
        begin
          LPosition := TPosition.CreatePosition(LIdx, LKdx, LJdx, 0);
          LArrayTasks[LKdx] := CreateTask(LPosition);
        end;
        for LTaskIdx := Low(LArrayTasks) to High(LArrayTasks) do
        begin
          LArrayTasks[LTaskIdx].Start;
        end;
        TTask.WaitForAll(LArrayTasks);
      end;
    end;
  
  end;
  
  {$ELSE}
  
  procedure TPBKDF_Argon2NotBuildInAdapter.FillMemoryBlocks;
  var
    LIdx, LJdx, LKdx: Int32;
  