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