docs: public void parse(final SelectStatement selectStatement) {
          if (!lexerEngine.skipIfEqual(MySQLKeyword.LIMIT)) {
              return;
          }
          int valueIndex = -1;
          int valueBeginPosition = lexerEngine.getCurrentToken().getEndPosition();
          int value;
          boolean isParameterForValue = false;
          if (lexerEngine.equalAny(Literals.INT)) {
              value = Integer.parseInt(lexerEngine.getCurrentToken().getLiterals());
              valueBeginPosition = valueBeginPosition - (value + "").length();
          } else if (lexerEngine.equalAny(Symbol.QUESTION)) {
              valueIndex = selectStatement.getParametersIndex();
              value = -1;
              valueBeginPosition--;
              isParameterForValue = true;
          } else {
              throw new SQLParsingException(lexerEngine);
          }
          lexerEngine.nextToken();
          if (lexerEngine.skipIfEqual(Symbol.COMMA)) {
              selectStatement.setLimit(getLimitWithComma(valueIndex, valueBeginPosition, value, isParameterForValue, selectStatement));
              return;
          }
          if (lexerEngine.skipIfEqual(MySQLKeyword.OFFSET)) {
              selectStatement.setLimit(getLimitWithOffset(valueIndex, valueBeginPosition, value, isParameterForValue, selectStatement));
              return;
          }
          if (isParameterForValue) {
              selectStatement.setParametersIndex(selectStatement.getParametersIndex() + 1);
          } else {
              selectStatement.addSQLToken(new RowCountToken(valueBeginPosition, value));
          }
          Limit limit = new Limit();
          limit.setRowCount(new LimitValue(value, valueIndex, false));
          selectStatement.setLimit(limit);
      }