Now, assume one also desires the ability to add borders to windows. Again, the original Window class has no support. The ScrollingWindow subclass now poses a problem, because it has effectively created a new kind of window. If one wishes to add border support to many but not all windows, one must create subclasses WindowWithBorder and ScrollingWindowWithBorder etc. This problem gets worse with every new feature or window subtype to be added. For the decorator solution, we simply create a new BorderedWindowDecorator—at runtime, we can decorate existing windows with the ScrollingWindowDecorator or the BorderedWindowDecorator or both, as we see fit. Notice that if the functionality needs to be added to all Windows, you could modify the base class and that will do. On the other hand, sometimes (e.g., using external frameworks) it is not possible, legal, or convenient to modify the base class.
When we instantiate a SimpleMessage and then pass it to the various decorators, we now get new behavior. Moreover, since both the concrete component and the concrete decorators all implement / descend from IMessage, they are interchangeable as far as the program is concerned, meaning that we can loop over them together. Further, rather than having to create a new ExcitedAndQuizzicalMessageDecorator class, we were able to achieve the same effect by double wrapping a SimpleMessage object (first in an ExcitedMessageDecorator and then in a QuizzicalMessageDecorator). Finally, note that despite having been passed into various decorators, our simpleMsg object remains unchanged at the end of the program.
There is general agreement that syntactic support is desirable to the current state of affairs. Guido mentioned syntactic support for decorators  in his DevDay keynote presentation at the 10th Python Conference , though he later said  it was only one of several extensions he proposed there "semi-jokingly". Michael Hudson raised the topic  on python-dev shortly after the conference, attributing the initial bracketed syntax to an earlier proposal on comp.lang.python by Gareth McCaughan .
Painters and paperhangers stand for prolonged periods. Their jobs also require a considerable amount of climbing, bending, kneeling, crouching, crawling and reaching with arms raised overhead often on scaffolding, ladders, and working at heights. Painters often work outdoors but seldom in wet, cold or inclement weather. Painters wear masks to reduce exposure to hazardous materials or paint fumes when working in areas with poor ventilation. Much of the work is done alone requiring independent thinking, safety awareness and ability to communicate with the customer. Special equipment is often used; such as equipment for welding, for use while scaffolding, on booms and lifts.
Moreover, the use of language is only an abstraction for a color equivalent. The word "red", for example, can cover a wide range of variations from the pure red of the visible spectrum of light. There is not a formalized register of different colors in the way that there is agreement on different notes in music, such as F or C♯. For a painter, color is not simply divided into basic (primary) and derived (complementary or mixed) colors (like red, blue, green, brown, etc.).