public static string GetCommandName([NotNull, ItemNotNull] ref IEnumerable<string> args)
{
#region Sanity checks
if (args == null) throw new ArgumentNullException(nameof(args));
#endregion
var arguments = new LinkedList<string>(args);
string commandName = arguments.FirstOrDefault(argument => !argument.StartsWith("-") && !argument.StartsWith("/"));
if (commandName != null) arguments.Remove(commandName);
args = arguments;
return commandName;
}
#endregion