def METHOD_NAME():
    """
    Test that inheritance and instantiation of a migrated class warn.
    Note we use `Property` because it has the higher level of difficulty of because
    it has a custom metaclass.
    """
    # Declaring the migrated class raises no concern
    with warnings.catch_warnings():
        warnings.simplefilter("error")
        class MigratedProperty(Property,
                               deprecated_in="1.2.3",
                               removed_in="2.0.0",
                               metaclass=generate_shared_meta(Property)):
            pass
    with pytest.deprecated_call():
        MigratedProperty(name="I'm a property!")
    with pytest.deprecated_call():
        class DerivedProperty(MigratedProperty):
            pass
    # Deriving from a derived class is fine
    with warnings.catch_warnings():
        warnings.simplefilter("error")
        class DoublyDerivedProperty(DerivedProperty):
            pass
    class IndependentProperty(Property):
        pass
    assert issubclass(MigratedProperty, Property)
    assert issubclass(Property, MigratedProperty)
    assert issubclass(DerivedProperty, MigratedProperty)
    assert issubclass(DoublyDerivedProperty, MigratedProperty)
    assert issubclass(IndependentProperty, MigratedProperty)
    assert isinstance(Property("Property Name"), MigratedProperty)
    with pytest.raises(TypeError, match="deprecated_in"):
        class NoVersionInfo(Property, metaclass=generate_shared_meta(Property)):
            pass
    with pytest.raises(TypeError, match="precisely"):
        class NoParent(deprecated_in="1.2.3",
                       removed_in="2.0.0",
                       metaclass=MigratedClassMeta):
            pass
    assert generate_shared_meta(dict) is MigratedClassMeta