private async Task <string> ImportFoldVersion(ApplicationVersionModel applicationVersion, FoldModel fold, string versionName)
        {
            var foldVersion = applicationVersion.DeepClone();

            foldVersion.Utterances = fold.TrainingSet.ToArray();
            foldVersion.Intents    = foldVersion.Intents.Where(x => foldVersion.Utterances.Any(y => y.Intent == x.Name)).ToArray();
            var response = await _luisClient.ImportVersion(_applicationId, versionName, foldVersion);

            return(response);
        }
        private async Task <string> RunExperiment(ApplicationVersionModel applicationVersion, FoldModel fold, int index)
        {
            var versionId = Guid.NewGuid().ToString().Substring(0, 5) + index;

            try
            {
                Console.WriteLine($"Uploading Version: {index}");

                await ImportFoldVersion(applicationVersion, fold, versionId);

                ColoredConsole.WriteLine($"Success Uploading Version: {index}", ConsoleColor.Green);

                Console.WriteLine($"Training Version: {index}");

                await _luisClient.TrainVersion(_applicationId, versionId);

                await this.WaitForTraining(versionId);

                ColoredConsole.WriteLine($"Success Training Version: {versionId}", ConsoleColor.Green);

                var testId = (await _luisClient.CreateTestDataSet(_applicationId, versionId, fold.TestSet.ToArray())).DeserializeObject <string>();

                return(await _luisClient.RunDataSetTest(_applicationId, versionId, testId));
            }
            catch (Exception e)
            {
                ColoredConsole.WriteLine(e.Message, ConsoleColor.Red);
                throw;
            }
        }