Generative programming methods, tools, and applications - Czarnecki, Krzysztof; Eisenecker, Ulrich W. (Addison-Wesley, 2005)