private static Assembly CompileCode(string code)
        {
#if !UNITY_EDITOR && ENABLE_IL2CPP
            throw new Exception("Code compilation is not supported on AOT platforms such as IL2CPP and requires JIT (Mono).");
#else
            CSharpCompiler.CodeCompiler compiler       = new CSharpCompiler.CodeCompiler();
            CompilerParameters          compilerParams = new CompilerParameters();
            Assembly[] allLoadedAssemblies             = AppDomain.CurrentDomain.GetAssemblies();

            compilerParams.GenerateExecutable = false;
            compilerParams.GenerateInMemory   = true;
            for (int i = 0; i < allLoadedAssemblies.Length; i++)
            {
                if (!allLoadedAssemblies[i].IsDynamic)
                {
                    string dllName = allLoadedAssemblies[i].Location;
                    compilerParams.ReferencedAssemblies.Add(dllName);
                }
            }

            CompilerResults compiledCode = compiler.CompileAssemblyFromSource(compilerParams, code);

            if (compiledCode.Errors.HasErrors)
            {
                string errorMessage = "Code Compilation Failure";
                for (int i = 0; i < compiledCode.Errors.Count; i++)
                {
                    errorMessage += $"\n{compiledCode.Errors[i].ErrorNumber} - {compiledCode.Errors[i].ErrorText}";
                }

                throw new ArgumentException(errorMessage);
            }

            return(compiledCode.CompiledAssembly);
#endif
        }