public static PlanMatchPattern infoSchemaTableScan(
      String expectedTableName, Optional<Integer> dataNodeId) {
    return node(InformationSchemaTableScanNode.class)
        .with(
            new InformationSchemaTableScanMatcher(
                expectedTableName,
                Optional.empty(),
                Collections.emptyList(),
                Collections.emptySet(),
                dataNodeId));
  }
Matches to any tree of nodes with children matching to given source matchers.
anyTree(tableScan("nation")) - will match to any plan which all leafs contain any node
containing table scan from nation table.

<p>Note: anyTree does not match zero nodes. E.g. output(anyTree(tableScan)) will NOT match
TableScan node followed by OutputNode.
iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/planner/assertions/PlanMatchPattern.java