What Is The Decorator Design Pattern?

From Sylvain Lecoy on DX: D8 Plugin writing:

Historically, decorators were used for graphical interfaces.
For instance if you have a TextView object that
displays text in a window. TextView has no scroll bars by default,
because you might not always need them. When we do, we can use a
ScrollDecorator to add them. Suppose we also want to add a thick black
border around the TextView. We can use a BorderDecorator to add this as
well. We simply compose the decorators with the TextView to produce a
bordered, scrollable text view.

Decorator subclasses are free to add operations for specific
functionality. For example, ScrollDecorator's ScrollTo operation lets
other objects scroll the interface if they know there happens to be a
ScrollDecorator object in the interface. (Design Patterns [176] - 1994).
It is said that subclasses are free to add, meaning that its not an
obligation. The collaboration specifications are: "Decorator forwards
requests to its Component object. It may optionally perform additional
operations before and after forwarding the request
." and are not
violated by your implementation.

That about sums up the Decorator design pattern.  Thanks for the research, Sylvain.