def METHOD_NAME(self, object_path: str, uuid: str, port: int, ok: Callable[[], None],
                        err: Callable[[Union[BluezDBusException, "NMConnectionError",
                                             GLib.Error, str]], None]) -> None:
    if uuid == '00000000-0000-0000-0000-000000000000':
        device = Device(obj_path=object_path)
        device.disconnect(reply_handler=ok, error_handler=err)
    else:
        service = get_service(Device(obj_path=object_path), uuid)
        assert service is not None
        if any(plugin.service_disconnect_handler(service, ok, err)
               for plugin in self.parent.Plugins.get_loaded_plugins(ServiceConnectHandler)):
            pass
        elif isinstance(service, SerialService):
            service.disconnect(port, reply_handler=ok, error_handler=err)
            for plugin in self.parent.Plugins.get_loaded_plugins(RFCOMMConnectedListener):
                plugin.on_rfcomm_disconnect(port)
            logging.info("Disconnecting rfcomm device")
        elif isinstance(service, NetworkService):
            service.disconnect(reply_handler=ok, error_handler=err)