private void OnArgumentTemplateChanged(ArgumentTemplateType type, ArgumentTemplate template)
        {
            var newArgument = template == null ? null : new Argument(template, null);

            switch (type)
            {
                case ArgumentTemplateType.Help:
                    helpArgument = newArgument;
                    break;
                case ArgumentTemplateType.QuietMode:
                    quietModeArgument = newArgument;
                    break;
                case ArgumentTemplateType.InteractiveMode:
                    interactiveModeArgument = newArgument;
                    break;
                default:
                    throw new ArgumentOutOfRangeException("type");
            }
        }
        private void RaiseArgumentTemplateChangedEvent(ArgumentTemplateType type, ArgumentTemplate newTemplate)
        {
            var handler = ArgumentTemplateChanged;

            if (handler != null)
            {
                handler(type, newTemplate);
            }
        }