The decorator pattern is suppose to
Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. This pattern is designed so that multiple decorators can be stacked on top of each other, each time adding a new functionality to the overridden method(s).
In effect you can if your decorator classes inherits from the same type that it is decorating one could chain more and more decorators thus adding more and more responsibility while still being able to use it where the original base class was called.
You would for example not be able to pass Borrowable where you required a LibraryItem in your example. Your example is just a composition example and not a decorator example.
Look at C# Stream and its decorators.
Lets for example say I had a Document class. Now I could have a DocumentWithSpellCheckingDecorator and DocumentWithGrammarCheckingDecorator. I could use both decorators or just one or the other, but still I would have a Document and can be used as a Document since I just decorated it with more functionality. Maybe this is not the perfect example, but hope it helps.
Btw the dofactor website is easy to understand but sometimes does not quite get the message across. I have found this on other patterns on the site as well.