anchor.diff:    inherited Destroy;
   
     fTaskQueue.Free; // Free task queue after Worker thread is destroyed so we don't wait for it
  +end;
  +
  +procedure TKMWorkerThread.NameThread;
  +begin
  +  {$IFDEF DEBUG}
  +  if fThreadName <> '' then
  +    TThread.NameThreadForDebugging(fThreadName, ThreadID);
  +  {$ENDIF}
   end;
   
   procedure TKMWorkerThread.Execute;
  
positive.code:       Job.Proc();
        FreeAndNil(Job);
      end;
    end;
  end;
  
  
negative.code: 
  
  { TKMWorkerThread }
  constructor TKMWorkerThread.Create(const aThreadName: string = '');
  begin
    //Thread isn't started until all constructors have run to completion
    //so Create(False) may be put in front as well
    inherited Create(False);
  
    fThreadName := aThreadName;
  
    NameThread;
  
    fWorkCompleted := False;
    fSynchronousExceptionMode := False;
  