public ParseResult Parse(TokenStream toks, IParseStack stk) { var offset = toks.Car().Start.Offset; if (!_memo.TryGetValue(offset, out ParseResult r)) { r = _parser.Parse(toks, stk); _memo[offset] = r; } return(r); }