docs: def graph(self):
          """
          Return a local transition graph that only contain nodes in current function.
          """
  
          if self._local_transition_graph is not None:
              return self._local_transition_graph
  
          g = networkx.DiGraph()
          if self.startpoint is not None:
              g.add_node(self.startpoint)
          for block in self._local_blocks.values():
              g.add_node(block)
          for src, dst, data in self.transition_graph.edges(data=True):
              if 'type' in data:
                  if data['type']  == 'transition' and ('outside' not in data or data['outside'] is False):
                      g.add_edge(src, dst, **data)
                  elif data['type'] == 'fake_return' and 'confirmed' in data and \
                          ('outside' not in data or data['outside'] is False):
                      g.add_edge(src, dst, **data)
  
          self._local_transition_graph = g
  
          return g