/// <summary>
        /// Start the emulator, if emulator is already started then do nothing
        /// </summary>
        public void StartEmulator(string arguments = null, [CallerLineNumber] int lineNumber = 0, [CallerMemberName] string caller = null)
        {
            int retryCount = 0;

            try
            {
                if (emulatorProcess != null)
                {
                    if (!emulatorProcess.HasExited)
                    {
                        logger.WriteLog("Emulator already exist", Color.AliceBlue, lineNumber, caller);
                        return;
                    }
                }
            }
            catch
            {
            }
            StartExecute++;
            if (StartExecute > 3)
            {
                StopEmulator();
                StartExecute = 0;
            }
            args = arguments;
Loop:
            retryCount++;
            var processlist = new List <Process>();

            try
            {
                if (retryCount > 5)
                {
                    throw new Exception("Unable to fetch process");
                }
                foreach (var proc in Process.GetProcesses())
                {
                    try
                    {
                        if (emulator.EmulatorName().Split('|').Any(x => x == proc.ProcessName || x == proc.MainWindowTitle))
                        {
                            processlist.Add(proc);
                        }
                    }
                    catch
                    {
                        //Some process might conduct null process name
                    }
                }
            }
            catch
            {
                //Some times the antivirus will block us for getting processes
                logger.WriteLog("Warning! Unable to fetch processes as blocked by antivirus! The process might unable to get emulator binded! Please to it manually!", Color.Red);
                SelectProcess select = new SelectProcess();
                if (select.ShowDialog() == DialogResult.OK)
                {
                    emulatorProcess = Process.GetProcessById(select.id);
                    logger.WriteLog("Emulator started", Color.Lime);
                    return;
                }
                else
                {
                    goto Loop;
                }
            }
            if (processlist.Count() > 0)
            {
                if (arguments == null)
                {
                    //Use default emulator arguments or just ignore it
                    foreach (var proc in processlist)
                    {
                        var cmd = Imports.GetCommandLineOfProcess(proc);
                        if (string.IsNullOrEmpty(cmd))
                        {
                            emulatorProcess = proc;
                            logger.WriteLog("Emulator started", Color.Lime);
                            return;
                        }
                        else
                        {
                            if (cmd.EndsWith(emulator.DefaultArguments()))
                            {
                                emulatorProcess = proc;
                                logger.WriteLog("Emulator started", Color.Lime);
                                return;
                            }
                        }
                    }
                }
                else
                {
                    foreach (var proc in processlist)
                    {
                        var cmd = Imports.GetCommandLineOfProcess(proc);
                        if (cmd.EndsWith(arguments))
                        {
                            emulatorProcess = proc;
                            logger.WriteLog("Emulator started", Color.Lime);
                            return;
                        }
                    }
                }
            }
            logger.WriteLog("Starting Emulator", Color.Lime);
            emulator.StartEmulator(arguments);
            Thread.Sleep(5000);
            goto Loop;
        }