def _merge_dict(stack, obj):
    strategy = obj.pop('__', 'merge-last')
    if strategy not in strategies:
        raise Exception('Unknown strategy `{}`, should be one of {}'.format(strategy, strategies))
    if strategy == 'overwrite':