As I said already, I'm not sure what behaviour you are looking for nor, at a higher level, of what you want to acomplish (there's almost always more than one way to deliver the desired functionality). Not knowing the latter, this slight modification of the example above may or may not help.
Names Default To Here( 1 );
Diagram(
hierarchy(
Hier Box(
bb1 = Button Box( "Great Grand Parent", Speak(bb1<<getButtonName), <<underlineStyle ),
Hier Box(
bb2 = Button Box( "Grand Parent 1", Speak(bb2<<getButtonName), <<underlineStyle ),
Hier Box( bb3 = Button Box( "Parent 1", Speak(bb3<<getButtonName), <<underlineStyle ), ),
Hier Box( bb4 = Button Box( "Parent 2", Speak(bb4<<getButtonName), <<underlineStyle ) ),
),
Hier Box(
bb5 = Button Box( "Grand Parent 2", Speak(bb5<<getButtonName), <<underlineStyle ),
Hier Box(
bb6 = Button Box( "Parent 3", Speak(bb6<<getButtonName), <<underlineStyle ),
Hier Box( bb7 = Button Box( "Child 1", Speak(bb7<<getButtonName), <<underlineStyle ) ),
Hier Box( bb8 = Button Box( "Child 2", Speak(bb8<<getButtonName), <<underlineStyle ) )
),
Hier Box( bb9 = Button Box( "Parent 4", Speak(bb9<<getButtonName), <<underlineStyle ) )
)
)
)
);