internal bool LoadAddon(string path, string[] args)
        {
            AssemblyName assemblyName = null;

            try
            {
                if (File.Exists(path))
                {
                    // Get the AssemblyName of the addon by the path
                    assemblyName = AssemblyName.GetAssemblyName(path);

                    // Try to execute the addon
                    DomainHandle.ExecuteAssemblyByName(assemblyName, args);
                    if (!LoadedAddons.Contains(assemblyName.Name))
                    {
                        LoadedAddons.Add(assemblyName.Name);
                    }
                    return(true);
                }
            }
            catch (MissingMethodException)
            {
                // The addon is a dll
                if (assemblyName != null && !LoadedLibraries.ContainsKey(assemblyName.GenerateToken()))
                {
                    try
                    {
                        // Load the DLL
                        var assembly = DomainHandle.Load(assemblyName);

                        // Store the DLL into loaded addons
                        LoadedLibraries[assemblyName.GenerateToken()] = assembly;

                        if (assembly.IsFullyTrusted)
                        {
                            // Verify that the DLL is the SDK
                            if (Sandbox.EqualsPublicToken(assemblyName, "6b574a82b1ea937e"))
                            {
                                // Call bootstrap
                                InitSDKBootstrap(assembly);
                            }
                        }
                        return(true);
                    }
                    catch (Exception e)
                    {
                        Logs.Log("Sandbox: Failed to call Bootstrap for EloBuddy.SDK");
                        Logs.Log(e.ToString());
                    }
                }
            }
            catch (Exception e)
            {
                Logs.Log("Sandbox: Failed to load addon");
                Logs.Log(e.ToString());
            }

            return(false);
        }
        internal static Assembly DomainOnAssemblyResolve(object sender, ResolveEventArgs args)
        {
#if DEBUG
            Logs.Log("Sandbox: Resolving '{0}'", args.Name);
#endif
            Assembly resolvedAssembly = null;

            try
            {
                // Don't handle resources
                if (args.Name.Contains(".resources"))
                {
                    return(null);
                }

                // Get AssemblyName and special token
                var assemblyName  = new AssemblyName(args.Name);
                var assemblyToken = assemblyName.GenerateToken();

                if (Assembly.GetExecutingAssembly().FullName.Equals(args.Name))
                {
                    // Executing assembly
                    resolvedAssembly = Assembly.GetExecutingAssembly();
                }
                else if (Sandbox.EqualsPublicToken(assemblyName, "7339047cb10f6e86"))
                {
                    // EloBuddy.dll
                    resolvedAssembly = Assembly.LoadFrom(SandboxConfig.EloBuddyDllPath);
                }
                else
                {
                    string resolvedPath;
                    if (FindAddon(assemblyName, out resolvedPath))
                    {
#if DEBUG
                        Logs.Log("Sandbox: Successfully resolved '{0}'", assemblyName.Name);
#endif
                        if (LoadedLibraries.ContainsKey(assemblyToken))
                        {
                            resolvedAssembly = LoadedLibraries[assemblyToken];
                        }
                        else
                        {
#if DEBUG
                            Logs.Log("Sandbox: Creating new instance '{0}'", assemblyName.Name);
#endif
                            // Load the addon into the app domain
                            resolvedAssembly = Assembly.LoadFrom(resolvedPath); //AddonLoadFrom(resolvedPath);

                            // Add the addon to the loaded addons dictionary
                            LoadedLibraries.Add(assemblyToken, resolvedAssembly);

                            if (resolvedAssembly.IsFullyTrusted)
                            {
                                // Check if the DLL is the SDK
                                if (Sandbox.EqualsPublicToken(assemblyName, "6b574a82b1ea937e"))
                                {
                                    // Call bootstrap
                                    InitSDKBootstrap(resolvedAssembly);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logs.Log("Sandbox: Failed to resolve addon:");
                Logs.Log(e.ToString());
            }

            if (resolvedAssembly != null && resolvedAssembly.IsFullyTrusted)
            {
#if DEBUG
                Logs.Log("Sandbox: Resolved assembly '{0}' is fully trusted!", resolvedAssembly.GetName().Name);
#endif
            }

            return(resolvedAssembly);
        }