anchor.diff:    private
       FMessages: TObjectList;
       FCriticalSection: TCriticalSection;
  +    FEvent : TSimpleEvent;
     public
       constructor Create;
       destructor Destroy; override;
   
       procedure Put(aMessage : TUramakiEngineMessage);
       function Pick : TUramakiEngineMessage;
  +    property Event : TSimpleEvent read FEvent write FEvent;
     end;
   
     TDoProcessMessage = procedure (aMessage : TUramakiEngineMessage) of object;
  
positive.code:   FMessagesThread.LetsDieEvent := FWaitForCloseThreadEvent;
    FMessagesThread.MessagesQueue := FMessagesQueue;
    FMessagesThread.DoProcessMessage:= Self.ProcessMessage;
  end;
  
  destructor TUramakiEngine.Destroy;
  
negative.code:   finally
      FCriticalSection.Leave;
    end;
    if Assigned(FEvent) then
      FEvent.SetEvent;
  end;
  
  function TUramakiEngineMessageQueue.Pick: TUramakiEngineMessage;
  