def METHOD_NAME(v1: Changable, v2: Changable, case_sensitive: bool = False) -> bool:
    """
    Check that v1 is a superset of v2.
    For dicts contains(v1[k], v2[k]) for all k in v2
    For other types v1 == v2
    v2 None is interpreted as {}
    """
    if not case_sensitive:
        if isinstance(v1, str):
            return isinstance(v2, str) and v1.lower() == v2.lower()
    if isinstance(v1, dict):
        return v2 is None or (isinstance(v2, dict) and
                              all(METHOD_NAME(v1.get(k, object()), v, case_sensitive=case_sensitive)
                                  for k, v in v2.items()))
    return v1 == v2