Generative programming principles and techniques of software engineering based on automated configuration and fragment-based component models - Czarnecki, Krzysztof (1999)