Pattern languages of program design - Coplien, James O. (Addison-Wesley, 1995)