code: def trace(start_node, fun, x):
      with trace_stack.new_trace() as t:
          start_box = new_box(x, t, start_node)
          end_box = fun(start_box)
          if isbox(end_box) and end_box._trace == start_box._trace:
              return end_box._value, end_box._node
          else:
              warnings.warn("Output seems independent of input.")
              return end_box, None
  
imports: import warnings
  from contextlib import contextmanager
  from collections import defaultdict
  from .util import subvals, toposort
  from .wrap_util import wraps
label_desc: Use image node_id 1 for calling a global function with example usage: trace(start_node, fun, x) and returns: end_box,  end_box, end_box,  None