Estendendo o UndoManager do Swing para fornecer repetição e vários desfazer / refazer

Fui encarregado de adicionar a funcionalidade desfazer / refazer / repetir a um aplicativo. Atualmente estou investigando se posso usar o UndoManager do Swing.

Além dos botões habituais de desfazer e refazer, preciso fornecer a capacidade de desfazer ou refazer várias edições de uma vez (suspensa a interface do usuário como o MS Office) e repetir uma edição escolhida.

Eu acredito que eu posso usar o UndoManager para vários desfazer e refazer. Ele fornece métodos para vários desfazer e refazer. Para criar a interface do usuário, posso estender o UndoManager para expor as edições que ele contém.

Não tenho certeza se posso usar o UndoManager para repetir a operação escolhida. Meus primeiros pensamentos foram estender o UndoManager e adicionar um método de repetição (edição). Esse método seria clonar ou copiar uma edição, refazer a cópia e, em seguida, colocar a cópia na parte superior da pilha de desfazer. Uma edição só seria repetível se implementasse Clonable.

Isso parece razoável? Existem melhores soluções? Devo estar rolando o meu próprio ao invés do UndoManager? Desde já, obrigado.