public static IRosCoreConnectionAction GetTeardownAction(this RosCoreConfigurationOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            var strategyName = options.TeardownStrategy?.Trim();

            if (strategyName == null)
            {
                if (options.StartupStrategy != null && options.StartupStrategy.Equals("launch", StringComparison.InvariantCultureIgnoreCase))
                {
                    strategyName = "close";
                }
                else
                {
                    strategyName = "none";
                }
            }

            if (strategyName.Equals("none", StringComparison.OrdinalIgnoreCase))
            {
                return(new NoAction());
            }

            if (strategyName.Equals("close", StringComparison.InvariantCultureIgnoreCase))
            {
                return(new ShutdownRosCoreAction());
            }

            if (strategyName.Equals("script", StringComparison.CurrentCultureIgnoreCase))
            {
                if (options.TeardownScriptPath == null)
                {
                    throw new Exception("No script");    // TODO: Correct exception
                }
                return(ScriptAction.Create(options.TeardownScriptPath));
            }

            throw new InvalidOperationException($"The provided roscore teardown strategy {options.TeardownStrategy} is not supported.");
        }