anchor.diff:      /// </summary>
       procedure EnQueue(AData: Pointer);
   
  -//    /// <summary>
  -//    ///   add to head
  -//    /// </summary>
  -//    procedure AddToHead(AData: Pointer);
  -
       /// <summary>
       ///  invoke Only Data Pointer is TObject
       /// </summary>
  
positive.code: begin
    FLocker.Enter;
    try
      if FHead = nil then Exit;
  
      while FHead.Next <> nil do
      begin
        ANext := FHead.Next;     
        
        queueDataPool.Push(FHead);
        FHead := ANext;
      end;
  
      FCount := 0;
    finally
      FLocker.Leave;
  
negative.code: var
    ANext: PQueueData;
  begin
    while FHead <> nil do
    begin
      ANext := FHead.Next;
      queueDataPool.Push(FHead);
      FHead := ANext;
    end;
    FCount := 0; 
  end;
  
  procedure TSimpleQueue.FreeDataObject;
  var
    lvData:Pointer;
  begin
  