Comment #15 on issue 2990 by [email protected]: \RemoveEmptyStaves in
StaffGroup context crashes
http://code.google.com/p/lilypond/issues/detail?id=2990
You're right that this check is intended to weed out this problem.
There is nothing, however, preventing a custom engraver or callback from
creating cyclical element trees in some other way.
I would recommend going with this patch and deleting the check in
process_acknowledged in favor of the more general one I've written in
pointer-group-interface. It seems that it is better to devise a general
solution to a problem (cyclical element lists) rather than creating
instance-specific solutions along the way.
You are right that the check in the axis-group-engraver is more efficient
than my solution. However, I'm still interested in seeing benchmarks. It
is a tradeoff between efficiency and completeness, and if efficiency
doesn't take a big hit, I think it's important to be complete.