code: def recursive_simplification(obj: Any) -> Any:
      """Simplify all expressions in obj recursively."""
      from .shape import MutableShape
  
      if isinstance(obj, MutableExpression):
          return expression_simplification(obj)
      elif isinstance(obj, MutableShape):
          return MutableShape(
              *[recursive_simplification(v) for v in obj]
          )
      elif isinstance(obj, dict):
          return {
              k: recursive_simplification(v) for k, v in obj.items()
          }
      elif isinstance(obj, list):
          return [recursive_simplification(v) for v in obj]
      elif isinstance(obj, tuple):
          return tuple(recursive_simplification(v) for v in obj)
      return obj
  
file_path: nni/nni/nas/profiler/pytorch/utils/_expression.py
imports: from __future__ import annotations
  import logging
  import traceback
  from typing import Any
  from nni.mutable import MutableExpression, Categorical, Numerical
label_desc: Use image node_id 3 for calling a global function with example usage: recursive_simplification(obj) and returns: obj, expression_simplification, MutableShape, unknown, unknown, tuple