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