public static Client CreateLocalClient(this MoonlightAPI moonlightApi)
        {
            if (LocalClient.NonSharedInstanceCreated)
            {
                throw new InvalidOperationException("There is already one instance of local client created for non shared context. Packet or walk functions cannot be hooked.");
            }

            if (LocalClient.SharedInstanceCreated && !moonlightApi.SharedInstance)
            {
                throw new InvalidOperationException("There is already one instance of local client created for shared context. Packet or walk functions cannot be hooked. Use MoonlightAPI.GetSharedMoonlightAPI for more injected dlls at once.");
            }

            if (!moonlightApi.SharedInstance)
            {
                LocalClient.NonSharedInstanceCreated = true;
            }
            else
            {
                LocalClient.SharedInstanceCreated = true;

                if (moonlightApi.Client is LocalClient)
                {
                    return(moonlightApi.Client);
                }
            }

            IClientManager clientManager = moonlightApi.Services.GetService <IClientManager>();

            return(moonlightApi.Client = clientManager.CreateLocalClient());
        }