private static void InvokeCallbackUIThread(object sender)
 {
     UIThreadInvoker.AssertUIThread();
     try
     {
         var command = sender as DynamicMenuCommand;
         if (command == null)
         {
             throw new InvalidOperationException("invalid command");
         }
         command.ExecuteCommand();
     }
     catch (Exception ex)
     {
         ContractsVsPackage.ReportException(ex);
     }
 }
        private static void QueryStatusCallbackUIThread(object sender)
        {
            UIThreadInvoker.AssertUIThread();
            try
            {
                DynamicMenuCommand command = sender as DynamicMenuCommand;
                if (command == null)
                {
                    throw new InvalidOperationException();
                }
                if (command.Package.Zombied)
                {
                    return;
                }

                command.QueryStatus();
            }
            catch (Exception ex)
            {
                ContractsVsPackage.ReportException(ex);
            }
        }