code: @Override
      public final void undo(final UndoableCommand command) {
          try {
              command.undo();
          } catch (final RuntimeException exception) {
              // RuntimeExceptions are just thrown after logging
              getLogger().error(exception.getMessage());
              throw exception;
          } catch (final Exception exception) {
              // Other exceptions are wrapped after logging
              getLogger().error(exception.getMessage());
              throw new RuntimeException(exception);
          }
      }
docs: Undoes the received {@link Command}.
  <p>
  Any exception thrown by the command is caught, logged, then thrown again.
  All these exceptions will be an instance of {@code RuntimeException}, or
  be wrapped by it, when they are thrown out of this method.
  
  @param command
  the {@code UndoableCommand} to be undone