//===========================================================================================
        /// <summary>
        /// Register a handler for a specific command line argument
        /// </summary>
        /// <param name="argName"></param>
        /// <param name="argHandler"></param>
        /// <param name="required"></param>
        /// <param name="helpString"></param>
        /// <returns></returns>
        public Boolean RegisterArgument(String argName, CommandLineArgHandler argHandler, Boolean required, String helpString)
        {
            if (String.IsNullOrEmpty(argName))
            {
                Console.WriteLine("Empty paramenter name");
                return(false);
            }
            if (ArgumentHandler.ContainsKey(argName))
            {
                Console.WriteLine("Argument already registered: " + argName);
                return(false);
            }

            ArgDefinition argDef = new ArgDefinition();

            argDef.handler    = argHandler;
            argDef.required   = required;
            argDef.helpString = helpString;
            argDef.hadError   = false;

            String argPrefix = argName.Substring(0, 2);

            if (argPrefix != "--")
            {
                // This is the empty value
                argDef.emptyValueName = argName;
                argName = "";
            }

            ArgumentHandler.Add(argName, argDef);
            return(true);
        }
 //===========================================================================================
 /// <summary>
 /// Register a handler for any parsing errors
 /// </summary>
 /// <param name="errorHandler"></param>
 public void RegisterErrorHandler(CommandLineArgHandler errorHandler)
 {
     ErrorHandler = errorHandler;
 }