docs: public static Point2 parse(String str) {
      String[] numbers = str.split(",");
      if (numbers.length != 2) {
        throw new IllegalArgumentException("'str' has an invalid format.");
      }
      int[] vs = new int[2];
      for (int i = 0; i < numbers.length; i++) {
        String number = numbers[i];
        int left =
            StringUtils.indexOfAny(number, new char[] {'+', '-', '0', '1', '2', '3', '4', '5', '6',
                '7', '8', '9'});
        int right =
            StringUtils.lastIndexOfAny(numbers[i], new char[] {'0', '1', '2', '3', '4', '5', '6',
              '7', '8', '9'});
        if (!(0 <= left && left <= right)) {
          throw new IllegalArgumentException("'str' has an invalid format.");
        }
        vs[i] = Integer.parseInt(numbers[i].substring(left, right + 1));
      }
      return new Point2(vs[0], vs[1]);
    }