public void ParseCommandLine(string[] args)
 {
   NamedFlag lastFlag = null;
   foreach (string arg in args)
   {
     if (arg.StartsWith("--"))
     {
       if (lastFlag != null)
       {
         _flags.Add(lastFlag);
       }
       lastFlag = new NamedFlag(arg.Substring(2));
     }
     else if (arg.StartsWith("-"))
     {
       if (lastFlag != null)
       {
         _flags.Add(lastFlag);
       }
       lastFlag = new NamedFlag(arg.Substring(1));
     }
     else
     {
       SimpleArgument argument = new SimpleArgument(arg);
       if (lastFlag != null)
       {
         _options.Add(new NamedOption(lastFlag, argument));
         lastFlag = null;
       }
       else
       {
         _orphanedArguments.Add(argument);
       }
     }
   }
   if (lastFlag != null)
   {
     _flags.Add(lastFlag);
   }
 }
 public NamedOption(NamedFlag flag, SimpleArgument argument)
 {
   _flag = flag;
   _argument = argument;
 }