def METHOD_NAME(old, update):
    """Merge two values loaded from YAML
    This combines two values recursively that have been loaded from
    YAML.  The data from *update* will be overlaid onto *old*
    according to the rules:
    - If *old* and *update* are dictionaries, their keys will be
      unified, with the values for any keys present in both
      dictionaries being merged recursively.
    - If *old* and *update* are lists, the result is the concatenation
      of the two lists.
    - Otherwise, *update* replaces *old*.
    Neither *old* nor *update* is modified; any modifications required
    lead to a new value being returned.
    """
    if isinstance(old, dict) and isinstance(update, dict):
        res = dict()
        for k in (set(old) | set(update)):
            if (k in old) and (k in update):
                res[k] = METHOD_NAME(old[k], update[k])
            elif k in old:
                res[k] = old[k]
            else:
                res[k] = update[k]
        return res
    elif isinstance(old, list) and isinstance(update, list):
        return old + update
    else:
        return update