private void FindMatchingArgumentInRawParseData(ArgHook.HookContext context)
{
var match = from k in context.ParserData.ExplicitParameters.Keys where IsMatch(k) select k;
if (match.Count() > 1)
{
throw new DuplicateArgException("Argument specified more than once: " + Aliases.First());
}
else if (match.Count() == 1)
{
var key = match.First();
context.ArgumentValue = context.ParserData.ExplicitParameters[key];
context.ParserData.ExplicitParameters.Remove(key);
}
else if (context.ParserData.ImplicitParameters.ContainsKey(Position))
{
var position = Position;
context.ArgumentValue = context.ParserData.ImplicitParameters[position];
context.ParserData.ImplicitParameters.Remove(position);
}
else
{
context.ArgumentValue = null;
}
}