Comment by all2
An implementation of statecharts. I'm working through core functionality using recursive algorithms.
I discovered that "least common ancestor" boils down to the intersection of 'root-path' sets, where you select the last item in the set as the 'first/least common ancestor'.