code: public final Parser<T> atomic() {
      return new Parser<T>() {
        @Override public Parser<T> label(String name) {
          return Parser.this.label(name).atomic();
        }
        @Override boolean apply(ParseContext ctxt) {
          int at = ctxt.at;
          int step = ctxt.step;
          boolean r = Parser.this.apply(ctxt);
          if (r) ctxt.step = step + 1;
          else ctxt.setAt(step, at);
          return r;
        }
        @Override public String toString() {
          return Parser.this.toString();
        }
      };
    }
docs: A {@link Parser} that undoes any partial match if {@code this} fails. In other words, the
  parser either fully matches, or matches none.