code: def dict_merge(dct, merge_dct):
      """Recursive dict merge. Inspired by :meth:``dict.update()``, instead of
      updating only top-level keys, dict_merge recurses down into dicts nested
      to an arbitrary depth, updating keys. The ``merge_dct`` is merged into
      ``dct``.
  
      Args:
          dct: dict onto which the merge is executed
          merge_dct: dct merged into dct
  
      Returns: dct
      """
      for k, v in merge_dct.items():
          if (
              k in dct
              and isinstance(dct[k], dict)
              and isinstance(merge_dct[k], collectionsAbc.Mapping)
          ):
              dict_merge(dct[k], merge_dct[k])
          else:
              dct[k] = merge_dct[k]
      return dct
  
imports: from __future__ import absolute_import
  from __future__ import print_function
  from __future__ import division
  import importlib
  import os
  import sys
  import yaml
  import collections
  from .config.schema import SchemaDict, SharedConfig, extract_schema
  from .config.yaml_helpers import serializable
label_desc: Use image node_id 4 for calling a global function with example usage: dict_merge(dct, merge_dct) and returns: dct