public AddInServerWorker CreateDomain(AddInToken token, PermissionSet permissionSet)
        {
            AppDomain      domain;
            AppDomainSetup setup = new AppDomainSetup();

            setup.ApplicationBase   = Path.GetDirectoryName(token._addin.Location);
            setup.ConfigurationFile = token._addin.Location + ".config";

            Assembly sysCore = typeof(AddInActivator).Assembly;

            domain = AppDomain.CreateDomain(token.Name,
                                            AppDomain.CurrentDomain.Evidence, setup, permissionSet,
                                            AddInActivator.CreateStrongName(sysCore)); // Grant full trust to System.Core.dll

            // Ensure we load System.Core.dll in this new AD.
            domain.Load(sysCore.FullName);

            ObjectHandle      workerHandle = Activator.CreateInstance(domain, sysCore.FullName, typeof(AddInServerWorker).FullName);
            AddInServerWorker server       = (AddInServerWorker)workerHandle.Unwrap();

            server.AddInServer = this;

            Interlocked.Increment(ref _addInAppDomains);

            return(server);
        }