An analytical comparison of generative programming technologies