Inefficient comparison of src and dest dicts.
        Recurses through dict and lists.
        returns None if there is no difference and a
        DictDiffObject of there are differences
        **kwargs can contain:
            wrap_dict_in_list default False. If True and one
                value is present as a list and the other is
                a dict, then the dict will be converted to
                a list of one dict of the comparison. This
                is helpful given the BadgerFish convention of
                emitting single elements as a dict, but >1 elements
                as a list of dicts:

def create(src, dest, **kwargs):
        """Inefficient comparison of src and dest dicts.
        Recurses through dict and lists.
        returns None if there is no difference and a
        DictDiffObject of there are differences
        **kwargs can contain:
            wrap_dict_in_list default False. If True and one
                value is present as a list and the other is
                a dict, then the dict will be converted to
                a list of one dict of the comparison. This
                is helpful given the BadgerFish convention of
                emitting single elements as a dict, but >1 elements
                as a list of dicts:
        """
        if src == dest:
            return None
        ddo = DictDiff()
        sk = set(src.keys())
        dk = set(dest.keys())
        for k in sk:
            v = src[k]
            if k in dk:
                dv = dest[k]
                if v != dv:
                    rec_call = None
                    if isinstance(v, dict) and isinstance(dv, dict):
                        rec_call = DictDiff.create(v, dv, **kwargs)
                    elif isinstance(v, list) and isinstance(dv, list):
                        rec_call = ListDiff.create(v, dv, **kwargs)
                    elif kwargs.get('wrap_dict_in_list', False):
                        if isinstance(v, dict) and isinstance(dv, list):
                            rec_call = ListDiff.create([v], dv, **kwargs)
                        elif isinstance(dv, dict) or isinstance(v, list):
                            rec_call = ListDiff.create(v, [dv], **kwargs)
                    if rec_call is not None:
                        ddo.add_modification(k, rec_call)
                    else:
                        ddo.add_modification(k, dv)
            else:
                ddo.add_deletion(k, v)
        add_keys = dk - sk
        for k in add_keys:
            ddo.add_addition(k, dest[k])
        ddo.finish()
        return ddo