forEachDepthFirst