@aaron.ballman Not sure if this (the added early return) is all you meant when you talked about virtual destructors.
I also wasn't sure about the added getOverridingFunction() - I think isDerivedFrom(..., paths) is what I should be using, but that seemed excessively hard to use.
Might as well simplify these a little bit.