code: def _merge_vars(
      varnames, vm_types, inferred_types, backend, log_message=None
  ):
      """Merges an updated vm_type for multiple variables.
  
      Args:
        varnames: Pattern of `string` variable names to merge.
        vm_types: Pattern of `instructions.TensorType` describing the incoming
          values.
        inferred_types: Extant dictionary of inferred types.  This is read
          to obtain the currently inferred types for the `varnames` and mutated
          to incorporate information from `vm_types`.
        backend: Object implementing required backend operations.
        log_message: Optional `string` describing this operation for the log.
      """
      if log_message is not None:
          log_debug(log_message + ": {}".format(varnames))
      for varname, vm_type in instructions.pattern_zip(
          varnames, vm_types, leaf_type=instructions.Type
      ):
          _merge_var(varname, vm_type, inferred_types, backend)
  
file_path: probability/tensorflow_probability/python/experimental/auto_batching/type_inference.py
imports: import contextlib
  import functools
  from absl import logging
  import six
  from tensorflow_probability.python.experimental.auto_batching import instructions
label_desc: Use image node_id 4 for calling a global function with example usage: _merge_vars(varnames, vm_types, inferred_types, backend, log_message) without return types