async def METHOD_NAME(test_service: TestInterface, dbus_session_bus: MessageBus):
    """Test init proxy on already connected object to update interfaces."""
    test_obj = await DBus.connect(
        dbus_session_bus, "service.test.TestInterface", DBUS_OBJECT_BASE
    )
    orig_introspection = await test_obj.introspect()
    callback_count = 0
    def test_callback():
        nonlocal callback_count
        callback_count += 1
    class TestInterface2(TestInterface):
        """Test interface 2."""
        interface = "service.test.TestInterface.Test2"
        object_path = DBUS_OBJECT_BASE
    # Test interfaces and methods match expected
    assert "service.test.TestInterface" in test_obj.proxies
    assert await test_obj.call_test(True) is None
    assert "service.test.TestInterface.Test2" not in test_obj.proxies
    # Test basic signal listening works
    test_obj.on_test(test_callback)
    test_service.signal_test()
    await test_service.ping()
    assert callback_count == 1
    callback_count = 0
    # Export the second interface and re-create proxy
    test_service_2 = TestInterface2()
    test_service_2.export(dbus_session_bus)
    await test_obj.init_proxy()
    # Test interfaces and methods match expected
    assert "service.test.TestInterface" in test_obj.proxies
    assert await test_obj.call_test(True) is None
    assert "service.test.TestInterface.Test2" in test_obj.proxies
    assert await test_obj.Test2.call_test(True) is None
    # Test signal listening. First listener should still be attached
    test_obj.Test2.on_test(test_callback)
    test_service_2.signal_test()
    await test_service_2.ping()
    assert callback_count == 1
    test_service.signal_test()
    await test_service.ping()
    assert callback_count == 2
    callback_count = 0
    # Return to original introspection and test interfaces have reset
    await test_obj.init_proxy(introspection=orig_introspection)
    assert "service.test.TestInterface" in test_obj.proxies
    assert "service.test.TestInterface.Test2" not in test_obj.proxies
    # Signal listener for second interface should disconnect, first remains
    test_service_2.signal_test()
    await test_service_2.ping()
    assert callback_count == 0
    test_service.signal_test()
    await test_service.ping()
    assert callback_count == 1
    callback_count = 0
    # Should be able to disconnect first signal listener on new proxy obj
    test_obj.off_test(test_callback)
    test_service.signal_test()
    await test_service.ping()
    assert callback_count == 0