Command cmd = change.createApplyCommand();
if (cmd != null) {
cmd.setLabel(change.getLabel());
if (changeUndone) {
change.restoreOldState();
} else {
// TODO: if the command is not actually executable, should we call
// restoreOldState() instead? I'm inclined not to because we've been
// using !canExecute() to elide no-op commands. But maybe we should
// rethink that (especially since IOngoingChange makes it much less