protected static void ConnectTeardown(NetworkObject.NetworkObjectEvent objectCreatedCallback = null)
        {
            if (objectCreatedCallback != null)
            {
                client.objectCreated -= objectCreatedCallback;
                server.objectCreated -= objectCreatedCallback;
            }

            if (otherClient != null)
            {
                if (objectCreatedCallback != null)
                {
                    otherClient.objectCreated -= objectCreatedCallback;
                }

                otherClient.Disconnect(false);
            }

            client.Disconnect(false);
            server.Disconnect(false);

            WaitFor(() => { return(!client.IsBound && !server.IsBound && (otherClient == null || !otherClient.IsBound)); });

            server      = null;
            client      = null;
            otherClient = null;
        }
        protected static void ConnectSetup(bool useOtherClient = false, NetworkObject.NetworkObjectEvent objectCreatedCallback = null)
        {
            currentPort = GetPort();
            start       = DateTime.UtcNow;

            server = new UDPServer(32);
            server.Connect(port: currentPort);

            if (objectCreatedCallback != null)
            {
                server.objectCreated += objectCreatedCallback;
            }

            client = new UDPClient();
            client.Connect("127.0.0.1", currentPort);

            if (objectCreatedCallback != null)
            {
                client.objectCreated += objectCreatedCallback;
            }

            WaitFor(() => { return(server.Players.Last().Accepted); });
            NetworkObject.Flush(client);

            if (!useOtherClient)
            {
                return;
            }

            OtherClientConnectSetup(objectCreatedCallback);
        }
        protected static void OtherClientConnectSetup(NetworkObject.NetworkObjectEvent objectCreatedCallback = null)
        {
            otherClient = new UDPClient();
            otherClient.Connect("127.0.0.1", currentPort);

            if (objectCreatedCallback != null)
            {
                otherClient.objectCreated += objectCreatedCallback;
            }

            WaitFor(() => { return(server.Players.Last().Accepted); });
            NetworkObject.Flush(otherClient);
        }