code: def _nondifferentiable_backward_transpose(
      cts_in, _, *, msg, symbolic
  ):
      if isinstance(cts_in, ad.Zero):
          return ad.Zero  # the class, not an instance
      else:
          if symbolic:
              raise RuntimeError(msg)
          else:
              # Unfortunately there are legitimate cases where we get all-zero
              # non-symbolic cotangents, so we have to use a runtime error here instead of
              # just erroring at trace time.
              # This happens when doing something like:
              #
              # x = nondifferentiable_backward(x)
              # x, y = lax.cond(pred, lambda: (x, y), lambda: (x+1, y+1))
              # return y
              return [error_if(cts_in, (cts_in != 0).any(), msg)]
  
file_path: equinox/equinox/internal/_nontraceable.py
imports: import functools
  from typing import Optional
  import jax
  import jax.core
  import jax.interpreters.ad
  import jax.interpreters.batching
  import jax.interpreters.mlir
  import jax.tree_util
  from jaxtyping import PyTree
  from .._ad import nondifferentiable
  from .._errors import error_if
  from .._filters import combine, is_array, partition
label_desc: Use image node_id 5 for calling a global function with example usage: _nondifferentiable_backward_transpose(cts_in, _) and returns: ad, list