code: def test_deconstruct():
      expr = Basic(S(1), S(2), S(3))
      expected = Compound(Basic, (1, 2, 3))
      assert deconstruct(expr) == expected
  
      assert deconstruct(1) == 1
      assert deconstruct(x) == x
      assert deconstruct(x, variables=(x,)) == Variable(x)
      assert deconstruct(Add(1, x, evaluate=False)) == Compound(
          Add, (1, x)
      )
      assert deconstruct(
          Add(1, x, evaluate=False), variables=(x,)
      ) == Compound(Add, (1, Variable(x)))
  
imports: from sympy.core.add import Add
  from sympy.core.basic import Basic
  from sympy.core.containers import Tuple
  from sympy.core.singleton import S
  from sympy.core.symbol import Symbol, symbols
  from sympy.logic.boolalg import And
  from sympy.core.symbol import Str
  from sympy.unify.core import Compound, Variable
  from sympy.unify.usympy import deconstruct, construct, unify, is_associative, is_commutative
  from sympy.abc import x, y, z, n
label_desc: Use image node_id 1 for calling a global function with example usage: test_deconstruct() without return types