code: def _crawl(expr, func, *args, **kwargs):
      """Crawl the expression tree, and apply func to every node."""
      val = func(expr, *args, **kwargs)
      if val is not None:
          return val
      new_args = (
          _crawl(arg, func, *args, **kwargs) for arg in expr.args
      )
      return expr.func(*new_args)
  
imports: from sympy.utilities import dict_merge
  from sympy.utilities.iterables import iterable
  from sympy.physics.vector import Dyadic, Vector, ReferenceFrame, Point, dynamicsymbols
  from sympy.physics.vector.printing import vprint, vsprint, vpprint, vlatex, init_vprinting
  from sympy.physics.mechanics.particle import Particle
  from sympy.physics.mechanics.rigidbody import RigidBody
  from sympy.simplify.simplify import simplify
  from sympy import Matrix, Mul, Derivative, sin, cos, tan, S
  from sympy.core.function import AppliedUndef
  from sympy.physics.mechanics.inertia import inertia, inertia_of_point_mass
  from sympy.utilities.exceptions import sympy_deprecation_warning
label_desc: Use image node_id 13 for calling a global function with example usage: _crawl(expr, func) and returns: expr, val