@override Future<T?> undo(T undo) async { if (_history.isEmpty) { return null; } // keep last from stack as redo var last = _history.removeLast(); _undoList.add(undo); return last; }