private void visit ( HtmlMatcherBlockNode blockNode , Map < Equivalence . Wrapper < ExprNode > , Boolean > exprValueMap , HtmlStack stack ) { if ( blockNode . getGraph ( ) . getRootNode ( ) . isPresent ( ) ) { new HtmlTagMatchingPass ( errorReporter , idGenerator , false , stack . inForeignContent , blockNode . getParentBlockType ( ) ) . run ( blockNode . getGraph ( ) ) ; } Optional < HtmlMatcherGraphNode > nextNode = blockNode . getNodeForEdgeKind ( EdgeKind . TRUE_EDGE ) ; if ( nextNode . isPresent ( ) ) { visit ( nextNode . get ( ) , exprValueMap , stack ) ; } else { checkUnusedTags ( stack ) ; } }
Blocks must be internally balanced but require knowing if they are in foreign content or not . Recursively run the tag matcher and throw away the result .