extend matching/visitor framework - introduce depthFirst helper