code: def check_objax_var_module(self, node):
      if not hasanno(node, "value"):
          return
      v = getanno(node, "value")
      v_name = getanno(node, "name")
      if v is None:
          return
      if isinstance(v, Module):
          self.vc.update(v.vars(scope=v_name + "."))
          setanno(node, "value", None)
      if isinstance(v, BaseVar):
          if v_name in self.vc and self.vc[v_name] is not v:
              # This generally should not happen and probably indication of a bug somewhere.
              raise ValueError(
                  f"Variable tracing failed because two variables were found with the same name {v_name}"
              )
          else:
              self.vc[v_name] = v
              setanno(node, "value", None)
  
file_path: objax/objax/util/tracing.py
imports: import inspect
  import ast
  import re
  import tokenize
  from io import StringIO
  from typing import Callable
  from objax.variable import BaseVar, VarCollection
  from objax.module import Module
label_desc: Use image node_id 2 for calling the AnalyzeUserVariablesNodeTransformer obj's underlying member method code with example usage: obj.check_objax_var_module(node) without return types