/// <summary>
        /// Initializes the test configurations.
        /// </summary>
        private CachedConfigurations InitializeConfigurations()
        {
            // If the tests were running on multiple threads there might be a race condition here.
            // But since the computation should always return the same result, it doesn't matter that the last one will win.
            switch (this.RunKind)
            {
            case TestRunKind.CheckinSuite:
                if (checkinConfigurations == null)
                {
                    checkinConfigurations = CreateConfigurations(this.RunKind);
                }

                return(checkinConfigurations);

            case TestRunKind.All:
                if (allConfigurations == null)
                {
                    allConfigurations = CreateConfigurations(this.RunKind);
                }

                return(allConfigurations);

            default:
                throw new NotSupportedException("Unsupported run kind '" + this.RunKind.ToString() + "' found.");
            }
        }
        /// <summary>
        /// Creates the configurations for a particular test run kind.
        /// </summary>
        /// <param name="runKind">The run kind to create the configurations for.</param>
        /// <returns>The created test configurations.</returns>
        private static RunKindTestConfigurations CreateConfigurations(TestRunKind runKind)
        {
            CachedConfigurations defaultConfigurations    = CreateDefaultConfigurations(runKind);
            CachedConfigurations configurationsWithIndent = CreateConfigurationsWithIndent(runKind, defaultConfigurations);

            return(new RunKindTestConfigurations
            {
                DefaultConfigurations = defaultConfigurations,
                ConfigurationsWithIndent = configurationsWithIndent,
            });
        }
        /// <summary>
        /// Creates test configurations with and without indenting based on a set of default configurations.
        /// </summary>
        /// <param name="runKind">The run kind to create the configurations for.</param>
        /// <param name="defaultConfigurations">The set of default configurations.</param>
        /// <returns>The created test configurations.</returns>
        private static CachedConfigurations CreateConfigurationsWithIndent(TestRunKind runKind, CachedConfigurations defaultConfigurations)
        {
            ICombinatorialEngineProvider combinatorialEngine = new FullCombinatorialEngineProvider();

            return(new CachedConfigurations
            {
                // AtomConfigurations = CreateConfigurationsWithIndent(runKind, combinatorialEngine, ODataFormat.Atom, defaultConfigurations.AtomConfigurations),
                JsonLightConfigurations = CreateConfigurationsWithIndent(runKind, combinatorialEngine, ODataFormat.Json, defaultConfigurations.JsonLightConfigurations),
                DefaultFormatConfigurations = CreateConfigurationsWithIndent(runKind, combinatorialEngine, /*format*/ null, defaultConfigurations.DefaultFormatConfigurations),
            });
        }
        /// <summary>
        /// Creates test configurations with and without indenting based on a set of default configurations.
        /// </summary>
        /// <param name="runKind">The run kind to create the configurations for.</param>
        /// <param name="defaultConfigurations">The set of default configurations.</param>
        /// <returns>The created test configurations.</returns>
        private static CachedConfigurations CreateConfigurationsWithIndent(TestRunKind runKind, CachedConfigurations defaultConfigurations)
        {
            ICombinatorialEngineProvider combinatorialEngine = new FullCombinatorialEngineProvider();

            return new CachedConfigurations
            {
                AtomConfigurations = CreateConfigurationsWithIndent(runKind, combinatorialEngine, ODataFormat.Atom, defaultConfigurations.AtomConfigurations),
                JsonLightConfigurations = CreateConfigurationsWithIndent(runKind, combinatorialEngine, ODataFormat.Json, defaultConfigurations.JsonLightConfigurations),
                DefaultFormatConfigurations = CreateConfigurationsWithIndent(runKind, combinatorialEngine, /*format*/ null, defaultConfigurations.DefaultFormatConfigurations),
            };
        }
        /// <summary>
        /// Initializes the test configurations.
        /// </summary>
        private CachedConfigurations InitializeConfigurations()
        {
            // If the tests were running on multiple threads there might be a race condition here.
            // But since the computation should always return the same result, it doesn't matter that the last one will win.
            switch (this.RunKind)
            {
                case TestRunKind.CheckinSuite:
                    if (checkinConfigurations == null)
                    {
                        checkinConfigurations = CreateConfigurations(this.RunKind);
                    }

                    return checkinConfigurations;
                case TestRunKind.All:
                    if (allConfigurations == null)
                    {
                        allConfigurations = CreateConfigurations(this.RunKind);
                    }

                    return allConfigurations;
                default:
                    throw new NotSupportedException("Unsupported run kind '" + this.RunKind.ToString() + "' found.");
            }
        }