  Basic automated refactoring operations can be chained to perform complex
structure transformations. This is useful for recovering the initial
architecture of a source code which has been degenerated with successive
evolutions during its maintenance lifetime. This is also useful for changing
the structure of a program so that a maintenance task at hand becomes modular
when it would be initially crosscutting. We focus on programs structured
according to Composite and Visitor design patterns, which have dual properties
with respect to modularity. We consider a refactoring-based round-trip
transformation between these two structures and we study how that
transformation is impacted by four variations in the implementation of these
patterns. We validate that study by computing the smallest preconditions for
the resulting transformations. We also automate the transformation and apply it
to JHotDraw, where the studied variations occur.
