code: static <T> Parser<T> nested(final Parser<Token[]> lexer, final Parser<? extends T> parser) {
      return new Parser<T>() {
        @Override boolean apply(ParseContext ctxt) {
          if (!lexer.apply(ctxt)) return false;
          Token[] tokens = lexer.getReturn(ctxt);
          ParserState parserState = new ParserState(
              ctxt.module, ctxt.source, tokens, 0, ctxt.locator, ctxt.getIndex(), tokens);
          ctxt.getTrace().startFresh(parserState);
          return ctxt.applyNested(parser, parserState);
        }
        
        @Override public String toString() {
          return parser.toString();
        }
      };
    }
docs: A {@link Parser} that takes as input the array of {@link Token} returned from {@code lexer},
  and feeds the tokens as input into {@code parser}.
  
  <p> It fails if either {@code lexer} or {@code parser} fails.
  
  @param lexer the lexer object that returns an array of Tok objects.
  @param parser the token level parser object.
  @return the new Parser object.