  In model-driven engineering, the bidirectional transformation of models plays
a crucial role in facilitating the use of editors that operate at different
levels of abstraction. This is particularly important in the context of
industrial-grade low-code platforms like OutSystems, which feature a
comprehensive ecosystem of tools that complement the standard integrated
development environment with domain-specific builders and abstract model
viewers. We introduce CHAMELEON, a tool that enables the dynamic definition of
a live bidirectional model transformation in a declarative manner by leveraging
simple and intuitive component patterns. Through this approach, we can
gradually define the view and synthesis paths to an abstract model built on top
of a low-code metamodel. We devise a standard parser-generating technique for
tree-like models that builds upon extended grammar definitions with constraints
and name binders. We allow for a greater overlap of model patterns that can
still be disambiguated for a clear lens-like behaviour of the transformation.
CHAMELEON is evaluated in the fragment of the OutSystems language targeting the
definition of user interfaces. To assess performance we used a large set of
real OutSystems applications, with approximately 200K UI widgets, and a
database of curated widget patterns. We found a worst-case processing time of
92ms for complete models in our benchmark, which is still suitable for the
operation of an interactive model editor.
