code: private void parseValues(final InsertStatement insertStatement) {
          Optional<InsertValuesToken> insertValuesToken = insertStatement.findSQLToken(InsertValuesToken.class);
          Preconditions.checkState(insertValuesToken.isPresent());
          insertStatement.getSQLTokens().remove(insertValuesToken.get());
          insertStatement.addSQLToken(new InsertValuesToken(insertValuesToken.get().getStartIndex()));
          do {
              lexerEngine.accept(Symbol.LEFT_PAREN);
              List<SQLExpression> sqlExpressions = new LinkedList<>();
              int count = 0;
              do {
                  sqlExpressions.add(basicExpressionParser.parse(insertStatement));
                  skipsDoubleColon();
                  count++;
              } while (lexerEngine.skipIfEqual(Symbol.COMMA));
              Collection<String> columnNames = new ArrayList<>(insertStatement.getColumnNames());
              Optional<String> generateKeyColumnName = shardingRule.findGenerateKeyColumnName(insertStatement.getTables().getSingleTableName());
              if (generateKeyColumnName.isPresent() && count != insertStatement.getColumnNames().size()) {
                  columnNames.remove(generateKeyColumnName.get());
              }
              count = 0;
              AndCondition andCondition = new AndCondition();
              String tableName = insertStatement.getTables().getSingleTableName();
              for (String each : columnNames) {
                  SQLExpression sqlExpression = sqlExpressions.get(count);
                  if (shardingRule.isShardingColumn(each, tableName)) {
                      if (!(sqlExpression instanceof SQLNumberExpression || sqlExpression instanceof SQLTextExpression || sqlExpression instanceof SQLParameterMarkerExpression)) {
                          throw new SQLParsingException("INSERT INTO can not support complex expression value on sharding column '%s'.", each);
                      }
                      andCondition.getConditions().add(new Condition(new Column(each, tableName), sqlExpression));
                  }
                  count++;
              }
              lexerEngine.accept(Symbol.RIGHT_PAREN);
              InsertValue insertValue = new InsertValue(sqlExpressions);
              insertStatement.getValues().add(insertValue);
              insertStatement.getRouteConditions().getOrCondition().getAndConditions().add(andCondition);
          } while (lexerEngine.skipIfEqual(Symbol.COMMA));
      }
docs: Parse insert values.
  
  @param insertStatement insert statement