If no operation has been undone, redo is not possible (you may know this from graphical applications where the redo button is grayed out if no operation has been undone). For the ``Database`` class, it means that an exception is thrown if it is attempted to undo an operation if nothing has been done yet or if it is attempted to call ``redo`` if no operation has been undone. The API docs document this behavior and even say which particular exception will be thrown. The guide only says that about the redo method. In general, I tried to describe and document only "normal" behavior and saved the corner and edge cases for the API reference. What do you think of this approach? Should I describe and explain the special cases, for example which input or state may raise an exception, in the guide as well? Or will it become too much then for the user?