class_docstr: Iterates through the graph of gm, starting with the output nodes
  and continuing backwards.
  1. Returns matchable subgraphs, in order. A subgraph is defined by
     (start_node, end_node).
  2. Skips over non-matchable subgraphs
class_docstr_tok: ["Iterates","through","the","graph","of","gm",",","starting","with","the","output","nodes","and","continuing","backwards",".","1",".","Returns","matchable","subgraphs",",","in","order",".","A","subgraph","is","defined","by","(","start_node",",","end_node",")",".","2",".","Skips","over","non-matchable","subgraphs"]
code: def _is_matchable(self, node: Node) -> bool:
      if node.op == "call_function":
          return node.target not in self.non_matchable_functions
      elif node.op == "call_module":
          assert isinstance(node.target, str)
          target_mod = getattr_from_fqn(self.gm, node.target)
          return not any(
              isinstance(target_mod, t)  # type: ignore[arg-type]
              for t in self.non_matchable_modules
          )
      elif node.op == "call_method":
          return node.target not in self.non_matchable_methods
      else:
          return False
  
imports: import collections
  import enum
  import torch
  from torch.fx import GraphModule
  from torch.fx.graph import Graph, Node
  from torch.ao.quantization.utils import getattr_from_fqn
  from .ns_types import NSSubgraph, NSNodeTargetType
  from .mappings import get_base_name_to_sets_of_related_ops, get_unmatchable_types_map
  from .pattern_utils import get_type_a_related_to_b, get_reversed_fusions, end_node_matches_reversed_fusion
  from torch.ao.quantization import ObserverBase, FakeQuantizeBase
  from typing import Dict, Tuple, List, Optional, Set, Any
label_desc: Use image node_id 5 for calling the _NSGraphMatchableSubgraphsIterator obj's underlying member method code with example usage: obj._is_matchable(node) and returns: unknown, unknown, unknown, False