{
      try
      {
        Command command = commands.previous();
        command.undo();
      }
      catch (RuntimeException exception)
      {
        // Skip over the command that threw the exception.
        //
        commands.next();

        try
        {
          // Iterate forward over the undone commands to redo them.
          //
          while (commands.hasNext())
          {
            Command command = commands.next();
            command.redo();
          }
        }
        catch (RuntimeException nestedException)
        {
          CommonPlugin.INSTANCE.log
            (new WrappedException
              (CommonPlugin.INSTANCE.getString("_UI_IgnoreException_exception"), nestedException).fillInStackTrace());
        }


        throw exception;
      }
    }