anchor.diff:          const Files : TArray<TFileName>; const TempDirectory : String);
         destructor Destroy; override;
   
  -      function RunAndReturn : IFuture<TArray<TFileName>>;
  +      function RunAndGetOutput : TArray<TFileName>;
     end;
   
   implementation
  
positive.code: 
    TTaskRunnerList = class (TObjectList<TTaskRunner>);
  
    //TODO: implement {TTaskManager}
    TTaskManager = class sealed
      strict private
        FRunners : TTaskRunnerList;
  
negative.code:   inherited Destroy;
  end;
  
  function TTaskManager.RunAndGetOutput : TArray<TFileName>;
  var
    arrTasks : TArray<ITask>;
    i : Integer;
  begin
    SetLength(arrTasks, FRunners.Count);
    for i := 0 to High(arrTasks) do
      arrTasks[i] := FRunners[i].Execute;
  
    TTask.WaitForAll(arrTasks);
  
    SetLength(Result, FRunners.Count);
    for i := 0 to High(Result) do
      Result[i] := FRunners[i].OutputFileName;
  end;
  
  end.
  