code: public static Parser<String> quoted(char begin, char end) {
      Pattern beforeClosingQuote =
          Patterns.isChar(begin).next(Patterns.many(CharPredicates.notChar(end)));
      return beforeClosingQuote.toScanner(Character.toString(begin)).next(isChar(end)).source();
    }
docs: A scanner for a quoted string that starts with character {@code begin} and ends with character
  {@code end}.