BXtendDSL: A layered framework for bidirectional model transformations combining a declarative and an imperative language Article in Journal of Systems and Software (July 2022)