code: def _ordered_node_addrs(self, function_address):
          
  
          try:
              function = self.kb.functions[function_address]
          except KeyError:
              # the function does not exist
              return [ ]
  
          if function_address not in self._function_node_addrs:
              sorted_nodes = CFGUtils.quasi_topological_sort_nodes(function.graph)
              self._function_node_addrs[function_address] = [ n.addr for n in sorted_nodes ]
  
          return self._function_node_addrs[function_address]
docs: For a given function, return all nodes in an optimal traversal order. If the function does not exist, return an
          empty list.
  
          :param int function_address: Address of the function.
          :return: A ordered list of the nodes.
          :rtype: list