code: def _backtrack_eisner(
      incomplete_backtrack,
      complete_backtrack,
      s,
      t,
      direction,
      complete,
      heads,
  ):
      """
      Backtracking step in Eisner's algorithm.
      - incomplete_backtrack is a (NW+1)-by-(NW+1) numpy array indexed by a start
       position, an end position, and a direction flag (0 means left, 1 means
       right). This array contains the arg-maxes of each step in the Eisner
       algorithm when building *incomplete* spans.
      - complete_backtrack is a (NW+1)-by-(NW+1) numpy array indexed by a start
       position, an end position, and a direction flag (0 means left, 1 means
       right). This array contains the arg-maxes of each step in the Eisner
       algorithm when building *complete* spans.
      - s is the current start of the span
      - t is the current end of the span
      - direction is 0 (left attachment) or 1 (right attachment)
      - complete is 1 if the current span is complete, and 0 otherwise
      - heads is a (NW+1)-sized numpy array of integers which is a placeholder
        for storing the head of each word.
      """
      if s == t:
          return
      if complete:
          r = complete_backtrack[s][t][direction]
          if direction == 0:
              _backtrack_eisner(
                  incomplete_backtrack,
                  complete_backtrack,
                  s,
                  r,
                  0,
                  1,
                  heads,
              )
              _backtrack_eisner(
                  incomplete_backtrack,
                  complete_backtrack,
                  r,
                  t,
                  0,
                  0,
                  heads,
              )
              return
          _backtrack_eisner(
              incomplete_backtrack,
              complete_backtrack,
              s,
              r,
              1,
              0,
              heads,
          )
          _backtrack_eisner(
              incomplete_backtrack,
              complete_backtrack,
              r,
              t,
              1,
              1,
              heads,
          )
          return
  
      r = incomplete_backtrack[s][t][direction]
      if direction == 0:
          heads[s] = t
          _backtrack_eisner(
              incomplete_backtrack,
              complete_backtrack,
              s,
              r,
              1,
              1,
              heads,
          )
          _backtrack_eisner(
              incomplete_backtrack,
              complete_backtrack,
              r + 1,
              t,
              0,
              1,
              heads,
          )
          return
      heads[t] = s
      _backtrack_eisner(
          incomplete_backtrack, complete_backtrack, s, r, 1, 1, heads
      )
      _backtrack_eisner(
          incomplete_backtrack,
          complete_backtrack,
          r + 1,
          t,
          0,
          1,
          heads,
      )
      return
  
label_desc: Use image node_id 2 for calling a global function with example usage: _backtrack_eisner(incomplete_backtrack, complete_backtrack, s, t, direction, complete, heads) without return types