public static Action <ICharStream> Action <TTreeBuilderStrategy>(this IParseTreeListener listener,
                                                                         IEnumerable <IAntlrErrorListener <int> > lexerErrorListeners = null, IEnumerable <IAntlrErrorListener <IToken> > errorListeners = null)
            where TTreeBuilderStrategy : ITreeBuilderStrategy, new()
        {
            if (listener == null)
            {
                throw new ArgumentNullException("listener");
            }

            return(input => listener.ListenTo(input, new TTreeBuilderStrategy(), lexerErrorListeners ?? new IAntlrErrorListener <int> [0], errorListeners ?? new IAntlrErrorListener <IToken> [0]));
        }