code: def _build_computational_graph(self, outputs):
      cands = []
      function_nodes = OrderedDict()
      push_count = [0]
  
      def add_cand(cand):
          heapq.heappush(cands, (-cand.rank, push_count[0], cand))
          push_count[0] += 1
  
      for o in outputs:
          if isinstance(o, chainer.Variable):
              o = o.node
          add_cand(o)
  
      while cands:
          _, _, cand = heapq.heappop(cands)
          if not isinstance(cand, chainer.variable.VariableNode):
              raise NotImplementedError(
                  "ONNX-Chainer does not support node type {}".format(
                      type(cand)
                  )
              )
          creator = cand.creator_node
          if creator is None:
              continue
          assert isinstance(creator, chainer.FunctionNode)
          creator_id = id(creator)
          if creator_id in function_nodes:
              continue
          function_nodes[creator_id] = creator
  
          for input_ in creator.inputs:
              add_cand(input_)
  
      return reversed(function_nodes.values())
  
file_path: chainer/onnx_chainer/graph.py
imports: import collections
  from collections import OrderedDict
  import heapq
  import chainer
  from onnx_chainer.functions.converter import FunctionConverterParams
  from onnx_chainer import onnx_helper
label_desc: Use image node_id 2 for calling the Graph obj's underlying member method code with example usage: obj._build_computational_graph(outputs) and returns: reversed