The Stratego program transformation language