public StackSafeSearcher(Source <TInput> source, SearchAction <TInput> beforeAction, Action <Parser <TInput> > afterAction)
 {
     this.stack         = new List <SearchState>();
     this.stackPosition = -1;
     this.scanner       = new StackSafeScanner <TInput>(source);
     Initialize(source, beforeAction, afterAction);
 }
        public StackSafeParser(Source <TInput> source, List <object> output)
        {
            this.stack         = new List <ParseState>();
            this.stackPosition = -1;
            this.scanner       = new StackSafeScanner <TInput>(source);

            Initialize(source, output);
        }