private void RunMainAndEpilog(Commands.BaseCommand command)
 {
     Debug.Assert(command.Context == this);
     Debug.Assert(RunningCommand == null);
     RunningCommand = command;
     if (command.ValidateOnRun() && command.DefaultValidateOnRun(this))
     {
         command.ExecutionPhase = Commands.CommandPhase.Main;
         command.RunMain();
         if (!(command is Commands.ISilentCommand))
         {
             command.ExecutionPhase = Commands.CommandPhase.Epilog;
             GetCommandRunner(command.GetType()).RunEpilog(command);
         }
     }
     Game.Controller.OnCommandEnd(command);
     RunningCommand = null;
 }