anchor.diff:  begin
     while not Terminated do
     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);
  +    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;
  -      tmpMessage := FQueue.Pick;
       end;
   
       if not Terminated then
  
positive.code: 
  destructor TUramakiEngineMessageQueue.Destroy;
  begin
    FCriticalSection.Free;
    FMessages.Free;
    inherited Destroy;
  end;
  
  
negative.code: destructor TUramakiEngine.Destroy;
  begin
    FMessagesThread.Terminate;
    FMessagesThread.MessagesQueue := nil;
    FMessagesThread.LetsGoEvent.SetEvent;
    FWaitForCloseThreadEvent.WaitFor(3000);
    FreeAndNil(FWaitForCloseThreadEvent);
  