code: public final Parser<T> peek() {
      return new Parser<T>() {
        @Override public Parser<T> label(String name) {
          return Parser.this.label(name).peek();
        }
        @Override boolean apply(ParseContext ctxt) {
          int step = ctxt.step;
          int at = ctxt.at;
          boolean ok = Parser.this.apply(ctxt);
          if (ok) ctxt.setAt(step, at);
          return ok;
        }
        @Override public String toString() {
          return "peek";
        }
      };
    }
docs: A {@link Parser} that runs {@code this} and undoes any input consumption if succeeds.