traverseNextNode() doesn't step into shadow tree. But it should allow caller to do it.
It turns out this isn't a right approach...