public static ArgumentsCollection Parse(string[] args)
        {
            var result = new ArgumentsCollection();

            int i = 0;

            while (i < args.Length)
            {
                string arg = args[i];
                if (arg.StartsWith("-"))
                {
                    if (arg.Length != 2)
                    {
                        throw new InvalidOperationException(string.Format("Invalid argument: '{0}'.", arg));
                    }

                    char   key   = arg[1];
                    string value = args[++i];
                    result.m_namedArguments.Add(key, value);
                }
                else
                {
                    result.m_positionalArguments.Add(arg);
                }
                i++;
            }

            return(result);
        }
        public static ArgumentsCollection Parse(string[] args)
        {
            var result = new ArgumentsCollection();

            int i = 0;
            while (i < args.Length)
            {
                string arg = args[i];
                if (arg.StartsWith("-"))
                {
                    if (arg.Length != 2)
                        throw new InvalidOperationException(string.Format("Invalid argument: '{0}'.", arg));

                    char key = arg[1];
                    string value = args[++i];
                    result.m_namedArguments.Add(key, value);
                }
                else
                    result.m_positionalArguments.Add(arg);
                i++;
            }

            return result;
        }