anchor.diff:  class procedure TKeymanStartTaskUninstall.ReportEvent(const Message: string);
   var
     hEventLog: THandle;
  +  msgs: array[0..0] of PChar;
   begin
     kl.LogError(Message);
     hEventLog := RegisterEventSource(nil, 'Keyman-Uninstall');
  +  msgs[0] := PChar(Message);
     Winapi.Windows.ReportEvent(
       hEventLog,
       EVENTLOG_ERROR_TYPE,
  +    0,
  +    99,
  +    nil,
       1,
  -    1,
  -    nil,
       0,
  -    Length(Message) * sizeof(Char),
  -    nil,
  -    PChar(Message)
  +    @msgs,
  +    nil
     );
  -  CloseHandle(hEventLog);
  +  DeregisterEventSource(hEventLog);
   end;
   
   class procedure TKeymanStartTaskUninstall.DeleteAllTasks;
  
positive.code: uses
    System.SysUtils,
    System.Variants,
    Winapi.ActiveX,
    Winapi.Windows,
  
  
negative.code:     try
        pTaskFolder := pService.GetFolder('\'+CTaskFolderName);
      except
        on E:EOleException do
        begin
          // We can't find the folder, for some unknown reason, so give up
          if E.ErrorCode <> HResultFromWin32(ERROR_FILE_NOT_FOUND) then
            ReportEvent('Failed to find '+CTaskFolderName+' task folder: '+E.ClassName+', '+E.Message);
          Exit;
        end;
  
        on E:Exception do
        begin
          ReportEvent('Failed to find '+CTaskFolderName+' task folder: '+E.ClassName+', '+E.Message);
          Exit;
        end;
  