anchor.diff:  
   destructor TUramakiEngineMessageQueue.Destroy;
   begin
  -  FCriticalSection.Free;
  -  FMessages.Free;
  +  FreeAndNil(FCriticalSection);
  +  FreeAndNil(FMessages);
     inherited Destroy;
   end;
   
  
positive.code: destructor TUramakiEngine.Destroy;
  begin
    FMessagesThread.Terminate;
    FMessagesThread.LetsGoEvent.SetEvent;
    FWaitForCloseThreadEvent.WaitFor(3000);
    FreeAndNil(FWaitForCloseThreadEvent);
  
negative.code: begin
    while not Terminated do
    begin
      if Assigned(FQueue) then
      begin
        tmpMessage := FQueue.Pick;
        while (tmpMessage <> nil) and (not Self.Terminated) do
        begin
          FCurrentMessage := tmpMessage;
          try
            Synchronize(FProcessMessage);
          except
            on e:Exception do
            begin
              Application.ShowException(e);
            end;
          end;
          tmpMessage := FQueue.Pick;
        end;
      end;
  
      if not Terminated then
  