introduce DescendantsBefore extension method