private static async Task RunAsync(IInstanceContext options)
        {
            var logger = LogManager.GetCurrentClassLogger();

            using (var consoleReader = new ConsoleReader())
                using (var container = Container.Build(options))
                {
                    consoleReader.Start();

                    LoadScriptsAsync(container);

                    var watcher = container.Resolve <IWatcher>();

                    using (var watchHandle = watcher.Watch())
                    {
                        logger.Info("Entering run loop; press enter to stop; press R to force complete re-run");

                        var stopping = false;

                        while (!stopping)
                        {
                            var key = consoleReader.Read(TimeSpan.FromSeconds(.5d));
                            if (key.HasValue == false)
                            {
                                continue;
                            }

                            switch (key.Value)
                            {
                            case '\r':
                            case '\n':
                                stopping = true;
                                break;

                            case 'R':
                            case 'r':
                                await RunTestsAsync(container).ConfigureAwait(false);

                                break;
                            }
                        }
                    }
                }
        }
        private static async Task RunAsync(IInstanceContext options)
        {
            var logger = LogManager.GetCurrentClassLogger();

            using (var consoleReader = new ConsoleReader())
            using (var container = Container.Build(options))
            {
                consoleReader.Start();

                LoadScriptsAsync(container);

                var watcher = container.Resolve<IWatcher>();

                using (var watchHandle = watcher.Watch())
                {
                    logger.Info("Entering run loop; press enter to stop; press R to force complete re-run");

                    var stopping = false;

                    while (!stopping)
                    {
                        var key = consoleReader.Read(TimeSpan.FromSeconds(.5d));
                        if (key.HasValue == false)
                        {
                            continue;
                        }

                        switch (key.Value)
                        {
                            case '\r':
                            case '\n':
                                stopping = true;
                                break;
                            case 'R':
                            case 'r':
                                await RunTestsAsync(container).ConfigureAwait(false);
                                break;
                        }
                    }
                }
            }
        }