private static ParserResult <object> MatchVerb(
     Func <IEnumerable <string>, IEnumerable <OptionSpecification>, StatePair <IEnumerable <Token> > > tokenizer,
     IEnumerable <Tuple <Verb, Type> > verbs,
     IEnumerable <string> arguments,
     StringComparer nameComparer,
     CultureInfo parsingCulture)
 {
     return(verbs.Any(a => nameComparer.Equals(a.Item1.Name, arguments.First()))
         ? InstanceBuilder.Build(
                () => Activator.CreateInstance(verbs.Single(v => nameComparer.Equals(v.Item1.Name, arguments.First())).Item2),
                tokenizer,
                arguments.Skip(1),
                nameComparer,
                parsingCulture)
         : ParserResult.Create <object>(
                ParserResultType.Verbs,
                new NullInstance(),
                new[] { new BadVerbSelectedError(arguments.First()) },
                Maybe.Just(verbs.Select(v => v.Item2))));
 }