@startuml skinparam BackgroundColor F0F0F0 participant "ConcreteTree" as ct participant "ConcreteWalker" as cw participant "ConcreteVisitor" as cv participant "gui::Item" as item [o->cw : traverse(root) create ct activate cw #DarkGreen ct <- cw : <>(root) activate ct #DarkGreen create cv cw -> cv : <> activate cv #DarkGreen loop tree::hasNext() ct <- cw : getNext activate ct #LimeGreen ct --> cw : node deactivate ct cw -> item : accept(visitor) activate item #DarkGreen cv <- item : visit(*this) activate cv #LimeGreen cv -> item : interaction activate item #LimeGreen cv <-- item deactivate item cv --> item deactivate cv cw <-- item deactivate item cw -> cv : <> activate cv #LimeGreen cw <-- cv deactivate cv end cw -x cv : <> deactivate cv ct x- cw : <> deactivate ct @enduml