private int FindTargetsAssemblyAndRunBounce(string[] args)
        {
            var optionsAndArguments = GetAssemblyFileName(args);

            BeforeBounceScriptRunner.RunBeforeBounceScript(optionsAndArguments);

            bounceDirectory = optionsAndArguments.BounceDirectory;
            arguments       = optionsAndArguments.RemainingArguments;

            var appDomainSetup = new AppDomainSetup {
                ShadowCopyFiles = "true"
            };
            var appDomain = AppDomain.CreateDomain("Bounce", null, appDomainSetup);

            try {
                //call back to transfer control to other app domain
                appDomain.DoCallBack(RunTask);
                return(0);
            } catch (Exception) {
                return(1);
            } finally
            {
                AppDomain.Unload(appDomain);
            }
        }