public static void InjectClientThread(this IClientWorldAccessor world, string name,
                                              params ClientSystem[] systems)
        {
            var instance       = CreateClientThread(world, name, systems);
            var clientThreads  = world.GetClientThreads();
            var vanillaSystems = world.GetVanillaSystems();

            foreach (var system in systems)
            {
                vanillaSystems.Push(system);
            }

            (world as ClientMain).SetField("clientSystems", vanillaSystems.ToArray());

            var thread = new Thread(() => instance.CallMethod("Process"))
            {
                IsBackground = true
            };

            thread.Start();
            thread.Name = name;
            clientThreads.Add(thread);
        }