All Downloads are FREE. Search and download functionalities are using the official Maven repository.

app.cash.sqldelight.dialects.hsql.grammar.HsqlParser Maven / Gradle / Ivy

There is a newer version: 2.0.2
Show newest version
// This is a generated file. Not intended for manual editing.
package app.cash.sqldelight.dialects.hsql.grammar;

import com.intellij.lang.PsiBuilder;
import com.intellij.lang.PsiBuilder.Marker;
import static app.cash.sqldelight.dialects.hsql.grammar.psi.HsqlTypes.*;
import static app.cash.sqldelight.dialects.hsql.grammar.HsqlParserUtil.*;
import com.intellij.psi.tree.IElementType;
import com.intellij.lang.ASTNode;
import com.intellij.psi.tree.TokenSet;
import com.intellij.lang.PsiParser;
import com.intellij.lang.LightPsiParser;
import static com.alecstrong.sql.psi.core.SqlParser.*;
import static com.alecstrong.sql.psi.core.SqlParserUtil.identifierExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.conflictClauseExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.checkConstraintExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.defaultConstraintExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.collationNameExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.foreignKeyClauseExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.withClauseExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.databaseNameExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.tableNameExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.tableAliasExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.columnNameExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.insertStmtValuesExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.columnAliasExt;
import static com.alecstrong.sql.psi.core.SqlParserUtil.orderingTermExt;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ALWAYS;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.AND;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.AS;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ASC;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.BETWEEN;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.BY;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.COLLATE;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.COMMA;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.CONSTRAINT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.DEFAULT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.DESC;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.DIGIT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.DOT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.GENERATED;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.GROUP;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ID;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.INSERT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.INTO;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.KEY;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.LP;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.MERGE;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.MULTIPLY;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.NO;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.NOT;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.NULL;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ORDER;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.PARTITION;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.PRIMARY;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.ROW;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.RP;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.TO;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.UNIQUE;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.WHERE;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.WITH;
import static com.alecstrong.sql.psi.core.psi.SqlTypes.WITHOUT;

@SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"})
public class HsqlParser implements PsiParser, LightPsiParser {

  public ASTNode parse(IElementType root_, PsiBuilder builder_) {
    parseLight(root_, builder_);
    return builder_.getTreeBuilt();
  }

  public void parseLight(IElementType root_, PsiBuilder builder_) {
    boolean result_;
    builder_ = adapt_builder_(root_, builder_, this, null);
    Marker marker_ = enter_section_(builder_, 0, _COLLAPSE_, null);
    result_ = parse_root_(root_, builder_);
    exit_section_(builder_, 0, marker_, root_, result_, true, TRUE_CONDITION);
  }

  protected boolean parse_root_(IElementType root_, PsiBuilder builder_) {
    return parse_root_(root_, builder_, 0);
  }

  static boolean parse_root_(IElementType root_, PsiBuilder builder_, int level_) {
    return root(builder_, level_ + 1);
  }

  /* ********************************************************** */
  // 'FLOAT' [ LP <> RP ] | 'REAL' | ( 'DOUBLE' 'PRECISION' ) | 'DOUBLE'
  public static boolean approximate_numeric_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "approximate_numeric_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, APPROXIMATE_NUMERIC_DATA_TYPE, "");
    result_ = approximate_numeric_data_type_real_0(builder_, level_ + 1);
    if (!result_) result_ = consumeToken(builder_, "REAL");
    if (!result_) result_ = approximate_numeric_data_type_real_2(builder_, level_ + 1);
    if (!result_) result_ = consumeToken(builder_, "DOUBLE");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // 'FLOAT' [ LP <> RP ]
  private static boolean approximate_numeric_data_type_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "approximate_numeric_data_type_real_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "FLOAT");
    result_ = result_ && approximate_numeric_data_type_real_0_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ LP <> RP ]
  private static boolean approximate_numeric_data_type_real_0_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "approximate_numeric_data_type_real_0_1")) return false;
    approximate_numeric_data_type_real_0_1_0(builder_, level_ + 1);
    return true;
  }

  // LP <> RP
  private static boolean approximate_numeric_data_type_real_0_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "approximate_numeric_data_type_real_0_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, LP);
    result_ = result_ && precisionExt(builder_, level_ + 1, HsqlParser::precision_real);
    result_ = result_ && consumeToken(builder_, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'DOUBLE' 'PRECISION'
  private static boolean approximate_numeric_data_type_real_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "approximate_numeric_data_type_real_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "DOUBLE");
    result_ = result_ && consumeToken(builder_, "PRECISION");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // id
  public static boolean base_window_name_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "base_window_name_real")) return false;
    if (!nextTokenIs(builder_, ID)) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, ID);
    exit_section_(builder_, marker_, BASE_WINDOW_NAME, result_);
    return result_;
  }

  /* ********************************************************** */
  // 'BIGINT'
  public static boolean big_int_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "big_int_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, BIG_INT_DATA_TYPE, "");
    result_ = consumeToken(builder_, "BIGINT");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // { ('BINARY' 'LARGE' 'OBJECT') | 'BLOB' } [ LP digit RP ]
  public static boolean binary_large_object_string_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_large_object_string_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, BINARY_LARGE_OBJECT_STRING_DATA_TYPE, "");
    result_ = binary_large_object_string_data_type_real_0(builder_, level_ + 1);
    result_ = result_ && binary_large_object_string_data_type_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // ('BINARY' 'LARGE' 'OBJECT') | 'BLOB'
  private static boolean binary_large_object_string_data_type_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_large_object_string_data_type_real_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = binary_large_object_string_data_type_real_0_0(builder_, level_ + 1);
    if (!result_) result_ = consumeToken(builder_, "BLOB");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'BINARY' 'LARGE' 'OBJECT'
  private static boolean binary_large_object_string_data_type_real_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_large_object_string_data_type_real_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "BINARY");
    result_ = result_ && consumeToken(builder_, "LARGE");
    result_ = result_ && consumeToken(builder_, "OBJECT");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ LP digit RP ]
  private static boolean binary_large_object_string_data_type_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_large_object_string_data_type_real_1")) return false;
    parseTokens(builder_, 0, LP, DIGIT, RP);
    return true;
  }

  /* ********************************************************** */
  // { ('BINARY' 'VARYING') | 'VARBINARY' } LP digit RP | <> | { 'BINARY' | 'LONGVARBINARY' } [ LP digit RP ] | 'UUID'
  public static boolean binary_string_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_string_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, BINARY_STRING_DATA_TYPE, "");
    result_ = binary_string_data_type_real_0(builder_, level_ + 1);
    if (!result_) result_ = binaryLargeObjectStringDataTypeExt(builder_, level_ + 1, HsqlParser::binary_large_object_string_data_type_real);
    if (!result_) result_ = binary_string_data_type_real_2(builder_, level_ + 1);
    if (!result_) result_ = consumeToken(builder_, "UUID");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // { ('BINARY' 'VARYING') | 'VARBINARY' } LP digit RP
  private static boolean binary_string_data_type_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_string_data_type_real_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = binary_string_data_type_real_0_0(builder_, level_ + 1);
    result_ = result_ && consumeTokens(builder_, 0, LP, DIGIT, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ('BINARY' 'VARYING') | 'VARBINARY'
  private static boolean binary_string_data_type_real_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_string_data_type_real_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = binary_string_data_type_real_0_0_0(builder_, level_ + 1);
    if (!result_) result_ = consumeToken(builder_, "VARBINARY");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'BINARY' 'VARYING'
  private static boolean binary_string_data_type_real_0_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_string_data_type_real_0_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "BINARY");
    result_ = result_ && consumeToken(builder_, "VARYING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // { 'BINARY' | 'LONGVARBINARY' } [ LP digit RP ]
  private static boolean binary_string_data_type_real_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_string_data_type_real_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = binary_string_data_type_real_2_0(builder_, level_ + 1);
    result_ = result_ && binary_string_data_type_real_2_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'BINARY' | 'LONGVARBINARY'
  private static boolean binary_string_data_type_real_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_string_data_type_real_2_0")) return false;
    boolean result_;
    result_ = consumeToken(builder_, "BINARY");
    if (!result_) result_ = consumeToken(builder_, "LONGVARBINARY");
    return result_;
  }

  // [ LP digit RP ]
  private static boolean binary_string_data_type_real_2_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "binary_string_data_type_real_2_1")) return false;
    parseTokens(builder_, 0, LP, DIGIT, RP);
    return true;
  }

  /* ********************************************************** */
  // DEFAULT | ( '?' | ':' <>>> )
  public static boolean bind_parameter_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "bind_parameter_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, BIND_PARAMETER, "");
    result_ = consumeToken(builder_, DEFAULT);
    if (!result_) result_ = bind_parameter_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // '?' | ':' <>>>
  private static boolean bind_parameter_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "bind_parameter_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "?");
    if (!result_) result_ = bind_parameter_real_1_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ':' <>>>
  private static boolean bind_parameter_real_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "bind_parameter_real_1_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, ":");
    result_ = result_ && identifierExt(builder_, level_ + 1, bind_parameter_real_1_1_1_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // ('BIT' 'VARYING') LP digit RP | 'BIT' [ LP digit RP ]
  public static boolean bit_string_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "bit_string_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, BIT_STRING_DATA_TYPE, "");
    result_ = bit_string_data_type_real_0(builder_, level_ + 1);
    if (!result_) result_ = bit_string_data_type_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // ('BIT' 'VARYING') LP digit RP
  private static boolean bit_string_data_type_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "bit_string_data_type_real_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = bit_string_data_type_real_0_0(builder_, level_ + 1);
    result_ = result_ && consumeTokens(builder_, 0, LP, DIGIT, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'BIT' 'VARYING'
  private static boolean bit_string_data_type_real_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "bit_string_data_type_real_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "BIT");
    result_ = result_ && consumeToken(builder_, "VARYING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'BIT' [ LP digit RP ]
  private static boolean bit_string_data_type_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "bit_string_data_type_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "BIT");
    result_ = result_ && bit_string_data_type_real_1_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ LP digit RP ]
  private static boolean bit_string_data_type_real_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "bit_string_data_type_real_1_1")) return false;
    parseTokens(builder_, 0, LP, DIGIT, RP);
    return true;
  }

  /* ********************************************************** */
  // 'BOOLEAN'
  public static boolean boolean_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "boolean_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, BOOLEAN_DATA_TYPE, "");
    result_ = consumeToken(builder_, "BOOLEAN");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // 'CHARACTERS' | 'OCTETS'
  public static boolean char_length_units_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "char_length_units_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, CHAR_LENGTH_UNITS, "");
    result_ = consumeToken(builder_, "CHARACTERS");
    if (!result_) result_ = consumeToken(builder_, "OCTETS");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // { ('CHARACTER' 'LARGE' 'OBJECT') | ('CHAR' 'LARGE' 'OBJECT') | 'CLOB' } [ LP <> RP ]
  public static boolean character_large_object_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, CHARACTER_LARGE_OBJECT_DATA_TYPE, "");
    result_ = character_large_object_data_type_real_0(builder_, level_ + 1);
    result_ = result_ && character_large_object_data_type_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // ('CHARACTER' 'LARGE' 'OBJECT') | ('CHAR' 'LARGE' 'OBJECT') | 'CLOB'
  private static boolean character_large_object_data_type_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_data_type_real_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = character_large_object_data_type_real_0_0(builder_, level_ + 1);
    if (!result_) result_ = character_large_object_data_type_real_0_1(builder_, level_ + 1);
    if (!result_) result_ = consumeToken(builder_, "CLOB");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'CHARACTER' 'LARGE' 'OBJECT'
  private static boolean character_large_object_data_type_real_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_data_type_real_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "CHARACTER");
    result_ = result_ && consumeToken(builder_, "LARGE");
    result_ = result_ && consumeToken(builder_, "OBJECT");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'CHAR' 'LARGE' 'OBJECT'
  private static boolean character_large_object_data_type_real_0_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_data_type_real_0_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "CHAR");
    result_ = result_ && consumeToken(builder_, "LARGE");
    result_ = result_ && consumeToken(builder_, "OBJECT");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ LP <> RP ]
  private static boolean character_large_object_data_type_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_data_type_real_1")) return false;
    character_large_object_data_type_real_1_0(builder_, level_ + 1);
    return true;
  }

  // LP <> RP
  private static boolean character_large_object_data_type_real_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_data_type_real_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, LP);
    result_ = result_ && characterLargeObjectLengthExt(builder_, level_ + 1, HsqlParser::character_large_object_length_real);
    result_ = result_ && consumeToken(builder_, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // digit [ <> ] [ <> ]
  public static boolean character_large_object_length_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_length_real")) return false;
    if (!nextTokenIs(builder_, DIGIT)) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, DIGIT);
    result_ = result_ && character_large_object_length_real_1(builder_, level_ + 1);
    result_ = result_ && character_large_object_length_real_2(builder_, level_ + 1);
    exit_section_(builder_, marker_, CHARACTER_LARGE_OBJECT_LENGTH, result_);
    return result_;
  }

  // [ <> ]
  private static boolean character_large_object_length_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_length_real_1")) return false;
    multiplierExt(builder_, level_ + 1, HsqlParser::multiplier_real);
    return true;
  }

  // [ <> ]
  private static boolean character_large_object_length_real_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_large_object_length_real_2")) return false;
    charLengthUnitsExt(builder_, level_ + 1, HsqlParser::char_length_units_real);
    return true;
  }

  /* ********************************************************** */
  // { ('CHARACTER' 'VARYING') | ('CHAR' 'VARYING') | 'VARCHAR' } LP digit RP | <> | { 'CHARACTER' | 'CHAR' | 'LONGVARCHAR' } [ LP digit RP ]
  public static boolean character_string_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_string_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, CHARACTER_STRING_DATA_TYPE, "");
    result_ = character_string_data_type_real_0(builder_, level_ + 1);
    if (!result_) result_ = characterLargeObjectDataTypeExt(builder_, level_ + 1, HsqlParser::character_large_object_data_type_real);
    if (!result_) result_ = character_string_data_type_real_2(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // { ('CHARACTER' 'VARYING') | ('CHAR' 'VARYING') | 'VARCHAR' } LP digit RP
  private static boolean character_string_data_type_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_string_data_type_real_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = character_string_data_type_real_0_0(builder_, level_ + 1);
    result_ = result_ && consumeTokens(builder_, 0, LP, DIGIT, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ('CHARACTER' 'VARYING') | ('CHAR' 'VARYING') | 'VARCHAR'
  private static boolean character_string_data_type_real_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_string_data_type_real_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = character_string_data_type_real_0_0_0(builder_, level_ + 1);
    if (!result_) result_ = character_string_data_type_real_0_0_1(builder_, level_ + 1);
    if (!result_) result_ = consumeToken(builder_, "VARCHAR");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'CHARACTER' 'VARYING'
  private static boolean character_string_data_type_real_0_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_string_data_type_real_0_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "CHARACTER");
    result_ = result_ && consumeToken(builder_, "VARYING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'CHAR' 'VARYING'
  private static boolean character_string_data_type_real_0_0_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_string_data_type_real_0_0_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "CHAR");
    result_ = result_ && consumeToken(builder_, "VARYING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // { 'CHARACTER' | 'CHAR' | 'LONGVARCHAR' } [ LP digit RP ]
  private static boolean character_string_data_type_real_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_string_data_type_real_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = character_string_data_type_real_2_0(builder_, level_ + 1);
    result_ = result_ && character_string_data_type_real_2_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'CHARACTER' | 'CHAR' | 'LONGVARCHAR'
  private static boolean character_string_data_type_real_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_string_data_type_real_2_0")) return false;
    boolean result_;
    result_ = consumeToken(builder_, "CHARACTER");
    if (!result_) result_ = consumeToken(builder_, "CHAR");
    if (!result_) result_ = consumeToken(builder_, "LONGVARCHAR");
    return result_;
  }

  // [ LP digit RP ]
  private static boolean character_string_data_type_real_2_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "character_string_data_type_real_2_1")) return false;
    parseTokens(builder_, 0, LP, DIGIT, RP);
    return true;
  }

  /* ********************************************************** */
  // [ CONSTRAINT <>>> ] (
  //   'AUTO_INCREMENT' |
  //   PRIMARY KEY [ ASC | DESC ] <>>> |
  //   NOT NULL <>>> |
  //   UNIQUE <>>> |
  //   <>>> |
  //   <> |
  //   <>>> |
  //   COLLATE <>>> |
  //   <>>>
  // )
  public static boolean column_constraint_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, COLUMN_CONSTRAINT, "");
    result_ = column_constraint_real_0(builder_, level_ + 1);
    result_ = result_ && column_constraint_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // [ CONSTRAINT <>>> ]
  private static boolean column_constraint_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_0")) return false;
    column_constraint_real_0_0(builder_, level_ + 1);
    return true;
  }

  // CONSTRAINT <>>>
  private static boolean column_constraint_real_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, CONSTRAINT);
    result_ = result_ && identifierExt(builder_, level_ + 1, column_constraint_real_0_0_1_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'AUTO_INCREMENT' |
  //   PRIMARY KEY [ ASC | DESC ] <>>> |
  //   NOT NULL <>>> |
  //   UNIQUE <>>> |
  //   <>>> |
  //   <> |
  //   <>>> |
  //   COLLATE <>>> |
  //   <>>>
  private static boolean column_constraint_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "AUTO_INCREMENT");
    if (!result_) result_ = column_constraint_real_1_1(builder_, level_ + 1);
    if (!result_) result_ = column_constraint_real_1_2(builder_, level_ + 1);
    if (!result_) result_ = column_constraint_real_1_3(builder_, level_ + 1);
    if (!result_) result_ = checkConstraintExt(builder_, level_ + 1, column_constraint_real_1_4_0_parser_);
    if (!result_) result_ = generatedClauseExt(builder_, level_ + 1, HsqlParser::generated_clause_real);
    if (!result_) result_ = defaultConstraintExt(builder_, level_ + 1, column_constraint_real_1_6_0_parser_);
    if (!result_) result_ = column_constraint_real_1_7(builder_, level_ + 1);
    if (!result_) result_ = foreignKeyClauseExt(builder_, level_ + 1, column_constraint_real_1_8_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // PRIMARY KEY [ ASC | DESC ] <>>>
  private static boolean column_constraint_real_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_1_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeTokens(builder_, 0, PRIMARY, KEY);
    result_ = result_ && column_constraint_real_1_1_2(builder_, level_ + 1);
    result_ = result_ && conflictClauseExt(builder_, level_ + 1, column_constraint_real_1_1_3_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ ASC | DESC ]
  private static boolean column_constraint_real_1_1_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_1_1_2")) return false;
    column_constraint_real_1_1_2_0(builder_, level_ + 1);
    return true;
  }

  // ASC | DESC
  private static boolean column_constraint_real_1_1_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_1_1_2_0")) return false;
    boolean result_;
    result_ = consumeToken(builder_, ASC);
    if (!result_) result_ = consumeToken(builder_, DESC);
    return result_;
  }

  // NOT NULL <>>>
  private static boolean column_constraint_real_1_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_1_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeTokens(builder_, 0, NOT, NULL);
    result_ = result_ && conflictClauseExt(builder_, level_ + 1, column_constraint_real_1_2_2_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // UNIQUE <>>>
  private static boolean column_constraint_real_1_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_1_3")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, UNIQUE);
    result_ = result_ && conflictClauseExt(builder_, level_ + 1, column_constraint_real_1_3_1_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // COLLATE <>>>
  private static boolean column_constraint_real_1_7(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "column_constraint_real_1_7")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, COLLATE);
    result_ = result_ && collationNameExt(builder_, level_ + 1, column_constraint_real_1_7_1_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // 'DATE' | ( 'TIME' | 'TIMESTAMP' ) [ LP digit RP ] [ ( WITH | WITHOUT ) 'TIME' 'ZONE' ]
  public static boolean date_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "date_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, DATE_DATA_TYPE, "");
    result_ = consumeToken(builder_, "DATE");
    if (!result_) result_ = date_data_type_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // ( 'TIME' | 'TIMESTAMP' ) [ LP digit RP ] [ ( WITH | WITHOUT ) 'TIME' 'ZONE' ]
  private static boolean date_data_type_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "date_data_type_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = date_data_type_real_1_0(builder_, level_ + 1);
    result_ = result_ && date_data_type_real_1_1(builder_, level_ + 1);
    result_ = result_ && date_data_type_real_1_2(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'TIME' | 'TIMESTAMP'
  private static boolean date_data_type_real_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "date_data_type_real_1_0")) return false;
    boolean result_;
    result_ = consumeToken(builder_, "TIME");
    if (!result_) result_ = consumeToken(builder_, "TIMESTAMP");
    return result_;
  }

  // [ LP digit RP ]
  private static boolean date_data_type_real_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "date_data_type_real_1_1")) return false;
    parseTokens(builder_, 0, LP, DIGIT, RP);
    return true;
  }

  // [ ( WITH | WITHOUT ) 'TIME' 'ZONE' ]
  private static boolean date_data_type_real_1_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "date_data_type_real_1_2")) return false;
    date_data_type_real_1_2_0(builder_, level_ + 1);
    return true;
  }

  // ( WITH | WITHOUT ) 'TIME' 'ZONE'
  private static boolean date_data_type_real_1_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "date_data_type_real_1_2_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = date_data_type_real_1_2_0_0(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, "TIME");
    result_ = result_ && consumeToken(builder_, "ZONE");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // WITH | WITHOUT
  private static boolean date_data_type_real_1_2_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "date_data_type_real_1_2_0_0")) return false;
    boolean result_;
    result_ = consumeToken(builder_, WITH);
    if (!result_) result_ = consumeToken(builder_, WITHOUT);
    return result_;
  }

  /* ********************************************************** */
  // <> | 'SECOND' [ LP digit RP ]
  public static boolean end_field_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "end_field_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, END_FIELD, "");
    result_ = nonSecondPrimaryDatetimeFieldExt(builder_, level_ + 1, HsqlParser::non_second_primary_datetime_field_real);
    if (!result_) result_ = end_field_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // 'SECOND' [ LP digit RP ]
  private static boolean end_field_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "end_field_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "SECOND");
    result_ = result_ && end_field_real_1_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ LP digit RP ]
  private static boolean end_field_real_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "end_field_real_1_1")) return false;
    parseTokens(builder_, 0, LP, DIGIT, RP);
    return true;
  }

  /* ********************************************************** */
  // { 'NUMERIC' | 'DECIMAL' | 'DEC' } [ LP <> [ COMMA <> ] RP ]
  public static boolean fixed_point_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "fixed_point_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, FIXED_POINT_DATA_TYPE, "");
    result_ = fixed_point_data_type_real_0(builder_, level_ + 1);
    result_ = result_ && fixed_point_data_type_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // 'NUMERIC' | 'DECIMAL' | 'DEC'
  private static boolean fixed_point_data_type_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "fixed_point_data_type_real_0")) return false;
    boolean result_;
    result_ = consumeToken(builder_, "NUMERIC");
    if (!result_) result_ = consumeToken(builder_, "DECIMAL");
    if (!result_) result_ = consumeToken(builder_, "DEC");
    return result_;
  }

  // [ LP <> [ COMMA <> ] RP ]
  private static boolean fixed_point_data_type_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "fixed_point_data_type_real_1")) return false;
    fixed_point_data_type_real_1_0(builder_, level_ + 1);
    return true;
  }

  // LP <> [ COMMA <> ] RP
  private static boolean fixed_point_data_type_real_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "fixed_point_data_type_real_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, LP);
    result_ = result_ && precisionExt(builder_, level_ + 1, HsqlParser::precision_real);
    result_ = result_ && fixed_point_data_type_real_1_0_2(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ COMMA <> ]
  private static boolean fixed_point_data_type_real_1_0_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "fixed_point_data_type_real_1_0_2")) return false;
    fixed_point_data_type_real_1_0_2_0(builder_, level_ + 1);
    return true;
  }

  // COMMA <>
  private static boolean fixed_point_data_type_real_1_0_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "fixed_point_data_type_real_1_0_2_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, COMMA);
    result_ = result_ && scaleExt(builder_, level_ + 1, HsqlParser::scale_real);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // ( 'RANGE' | 'ROWS' | 'GROUPS' )
  //   (
  //     BETWEEN (
  //       'UNBOUNDED' 'PRECEDING' |
  //       'CURRENT' ROW |
  //       <> 'PRECEDING' |
  //       <> 'FOLLOWING'
  //     ) AND (
  //       'UNBOUNDED' 'FOLLOWING' |
  //       'CURRENT' ROW |
  //       <> 'PRECEDING' |
  //       <> 'FOLLOWING'
  //     ) |
  //     'UNBOUNDED' 'PRECEDING' |
  //     'CURRENT' ROW |
  //     <> 'PRECEDING'
  //   ) [ 'EXCLUDE' NO 'OTHERS' | 'EXCLUDE' 'CURRENT' ROW | 'EXCLUDE' GROUP | 'EXCLUDE' 'TIES' ]
  public static boolean frame_spec_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real")) return false;
    boolean result_, pinned_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, FRAME_SPEC, "");
    result_ = frame_spec_real_0(builder_, level_ + 1);
    pinned_ = result_; // pin = 1
    result_ = result_ && report_error_(builder_, frame_spec_real_1(builder_, level_ + 1));
    result_ = pinned_ && frame_spec_real_2(builder_, level_ + 1) && result_;
    exit_section_(builder_, level_, marker_, result_, pinned_, null);
    return result_ || pinned_;
  }

  // 'RANGE' | 'ROWS' | 'GROUPS'
  private static boolean frame_spec_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_0")) return false;
    boolean result_;
    result_ = consumeToken(builder_, "RANGE");
    if (!result_) result_ = consumeToken(builder_, "ROWS");
    if (!result_) result_ = consumeToken(builder_, "GROUPS");
    return result_;
  }

  // BETWEEN (
  //       'UNBOUNDED' 'PRECEDING' |
  //       'CURRENT' ROW |
  //       <> 'PRECEDING' |
  //       <> 'FOLLOWING'
  //     ) AND (
  //       'UNBOUNDED' 'FOLLOWING' |
  //       'CURRENT' ROW |
  //       <> 'PRECEDING' |
  //       <> 'FOLLOWING'
  //     ) |
  //     'UNBOUNDED' 'PRECEDING' |
  //     'CURRENT' ROW |
  //     <> 'PRECEDING'
  private static boolean frame_spec_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = frame_spec_real_1_0(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_1(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_2(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_3(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // BETWEEN (
  //       'UNBOUNDED' 'PRECEDING' |
  //       'CURRENT' ROW |
  //       <> 'PRECEDING' |
  //       <> 'FOLLOWING'
  //     ) AND (
  //       'UNBOUNDED' 'FOLLOWING' |
  //       'CURRENT' ROW |
  //       <> 'PRECEDING' |
  //       <> 'FOLLOWING'
  //     )
  private static boolean frame_spec_real_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, BETWEEN);
    result_ = result_ && frame_spec_real_1_0_1(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, AND);
    result_ = result_ && frame_spec_real_1_0_3(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'UNBOUNDED' 'PRECEDING' |
  //       'CURRENT' ROW |
  //       <> 'PRECEDING' |
  //       <> 'FOLLOWING'
  private static boolean frame_spec_real_1_0_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = frame_spec_real_1_0_1_0(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_0_1_1(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_0_1_2(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_0_1_3(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'UNBOUNDED' 'PRECEDING'
  private static boolean frame_spec_real_1_0_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "UNBOUNDED");
    result_ = result_ && consumeToken(builder_, "PRECEDING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'CURRENT' ROW
  private static boolean frame_spec_real_1_0_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "CURRENT");
    result_ = result_ && consumeToken(builder_, ROW);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // <> 'PRECEDING'
  private static boolean frame_spec_real_1_0_1_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = expr(builder_, level_ + 1, -1);
    result_ = result_ && consumeToken(builder_, "PRECEDING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // <> 'FOLLOWING'
  private static boolean frame_spec_real_1_0_1_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_1_3")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = expr(builder_, level_ + 1, -1);
    result_ = result_ && consumeToken(builder_, "FOLLOWING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'UNBOUNDED' 'FOLLOWING' |
  //       'CURRENT' ROW |
  //       <> 'PRECEDING' |
  //       <> 'FOLLOWING'
  private static boolean frame_spec_real_1_0_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = frame_spec_real_1_0_3_0(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_0_3_1(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_0_3_2(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_1_0_3_3(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'UNBOUNDED' 'FOLLOWING'
  private static boolean frame_spec_real_1_0_3_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "UNBOUNDED");
    result_ = result_ && consumeToken(builder_, "FOLLOWING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'CURRENT' ROW
  private static boolean frame_spec_real_1_0_3_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "CURRENT");
    result_ = result_ && consumeToken(builder_, ROW);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // <> 'PRECEDING'
  private static boolean frame_spec_real_1_0_3_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = expr(builder_, level_ + 1, -1);
    result_ = result_ && consumeToken(builder_, "PRECEDING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // <> 'FOLLOWING'
  private static boolean frame_spec_real_1_0_3_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_0_3_3")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = expr(builder_, level_ + 1, -1);
    result_ = result_ && consumeToken(builder_, "FOLLOWING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'UNBOUNDED' 'PRECEDING'
  private static boolean frame_spec_real_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "UNBOUNDED");
    result_ = result_ && consumeToken(builder_, "PRECEDING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'CURRENT' ROW
  private static boolean frame_spec_real_1_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "CURRENT");
    result_ = result_ && consumeToken(builder_, ROW);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // <> 'PRECEDING'
  private static boolean frame_spec_real_1_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_1_3")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = expr(builder_, level_ + 1, -1);
    result_ = result_ && consumeToken(builder_, "PRECEDING");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ 'EXCLUDE' NO 'OTHERS' | 'EXCLUDE' 'CURRENT' ROW | 'EXCLUDE' GROUP | 'EXCLUDE' 'TIES' ]
  private static boolean frame_spec_real_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_2")) return false;
    frame_spec_real_2_0(builder_, level_ + 1);
    return true;
  }

  // 'EXCLUDE' NO 'OTHERS' | 'EXCLUDE' 'CURRENT' ROW | 'EXCLUDE' GROUP | 'EXCLUDE' 'TIES'
  private static boolean frame_spec_real_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = frame_spec_real_2_0_0(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_2_0_1(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_2_0_2(builder_, level_ + 1);
    if (!result_) result_ = frame_spec_real_2_0_3(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'EXCLUDE' NO 'OTHERS'
  private static boolean frame_spec_real_2_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "EXCLUDE");
    result_ = result_ && consumeToken(builder_, NO);
    result_ = result_ && consumeToken(builder_, "OTHERS");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'EXCLUDE' 'CURRENT' ROW
  private static boolean frame_spec_real_2_0_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "EXCLUDE");
    result_ = result_ && consumeToken(builder_, "CURRENT");
    result_ = result_ && consumeToken(builder_, ROW);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'EXCLUDE' GROUP
  private static boolean frame_spec_real_2_0_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "EXCLUDE");
    result_ = result_ && consumeToken(builder_, GROUP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // 'EXCLUDE' 'TIES'
  private static boolean frame_spec_real_2_0_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "frame_spec_real_2_0_3")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "EXCLUDE");
    result_ = result_ && consumeToken(builder_, "TIES");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // GENERATED ( ( (ALWAYS | BY DEFAULT) AS 'IDENTITY' ) | (ALWAYS AS <>) )
  public static boolean generated_clause_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "generated_clause_real")) return false;
    if (!nextTokenIs(builder_, GENERATED)) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, GENERATED);
    result_ = result_ && generated_clause_real_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, GENERATED_CLAUSE, result_);
    return result_;
  }

  // ( (ALWAYS | BY DEFAULT) AS 'IDENTITY' ) | (ALWAYS AS <>)
  private static boolean generated_clause_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "generated_clause_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = generated_clause_real_1_0(builder_, level_ + 1);
    if (!result_) result_ = generated_clause_real_1_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // (ALWAYS | BY DEFAULT) AS 'IDENTITY'
  private static boolean generated_clause_real_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "generated_clause_real_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = generated_clause_real_1_0_0(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, AS);
    result_ = result_ && consumeToken(builder_, "IDENTITY");
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ALWAYS | BY DEFAULT
  private static boolean generated_clause_real_1_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "generated_clause_real_1_0_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, ALWAYS);
    if (!result_) result_ = parseTokens(builder_, 0, BY, DEFAULT);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ALWAYS AS <>
  private static boolean generated_clause_real_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "generated_clause_real_1_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeTokens(builder_, 0, ALWAYS, AS);
    result_ = result_ && expr(builder_, level_ + 1, -1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // [ <>>> ] ( INSERT | MERGE ) INTO [ <>>> DOT ] <>>> [ AS <>>> ] [ LP <>>> ( COMMA <>>> ) * RP ] [ <> ] <>>>
  public static boolean insert_stmt_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real")) return false;
    boolean result_, pinned_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, INSERT_STMT, "");
    result_ = insert_stmt_real_0(builder_, level_ + 1);
    result_ = result_ && insert_stmt_real_1(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, INTO);
    result_ = result_ && insert_stmt_real_3(builder_, level_ + 1);
    result_ = result_ && tableNameExt(builder_, level_ + 1, insert_stmt_real_4_0_parser_);
    pinned_ = result_; // pin = 5
    result_ = result_ && report_error_(builder_, insert_stmt_real_5(builder_, level_ + 1));
    result_ = pinned_ && report_error_(builder_, insert_stmt_real_6(builder_, level_ + 1)) && result_;
    result_ = pinned_ && report_error_(builder_, insert_stmt_real_7(builder_, level_ + 1)) && result_;
    result_ = pinned_ && insertStmtValuesExt(builder_, level_ + 1, insert_stmt_real_8_0_parser_) && result_;
    exit_section_(builder_, level_, marker_, result_, pinned_, null);
    return result_ || pinned_;
  }

  // [ <>>> ]
  private static boolean insert_stmt_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_0")) return false;
    withClauseExt(builder_, level_ + 1, insert_stmt_real_0_0_0_parser_);
    return true;
  }

  // INSERT | MERGE
  private static boolean insert_stmt_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_1")) return false;
    boolean result_;
    result_ = consumeToken(builder_, INSERT);
    if (!result_) result_ = consumeToken(builder_, MERGE);
    return result_;
  }

  // [ <>>> DOT ]
  private static boolean insert_stmt_real_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_3")) return false;
    insert_stmt_real_3_0(builder_, level_ + 1);
    return true;
  }

  // <>>> DOT
  private static boolean insert_stmt_real_3_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_3_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = databaseNameExt(builder_, level_ + 1, insert_stmt_real_3_0_0_0_parser_);
    result_ = result_ && consumeToken(builder_, DOT);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ AS <>>> ]
  private static boolean insert_stmt_real_5(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_5")) return false;
    insert_stmt_real_5_0(builder_, level_ + 1);
    return true;
  }

  // AS <>>>
  private static boolean insert_stmt_real_5_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_5_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, AS);
    result_ = result_ && tableAliasExt(builder_, level_ + 1, insert_stmt_real_5_0_1_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ LP <>>> ( COMMA <>>> ) * RP ]
  private static boolean insert_stmt_real_6(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_6")) return false;
    insert_stmt_real_6_0(builder_, level_ + 1);
    return true;
  }

  // LP <>>> ( COMMA <>>> ) * RP
  private static boolean insert_stmt_real_6_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_6_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, LP);
    result_ = result_ && columnNameExt(builder_, level_ + 1, insert_stmt_real_6_0_1_0_parser_);
    result_ = result_ && insert_stmt_real_6_0_2(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ( COMMA <>>> ) *
  private static boolean insert_stmt_real_6_0_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_6_0_2")) return false;
    while (true) {
      int pos_ = current_position_(builder_);
      if (!insert_stmt_real_6_0_2_0(builder_, level_ + 1)) break;
      if (!empty_element_parsed_guard_(builder_, "insert_stmt_real_6_0_2", pos_)) break;
    }
    return true;
  }

  // COMMA <>>>
  private static boolean insert_stmt_real_6_0_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_6_0_2_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, COMMA);
    result_ = result_ && columnNameExt(builder_, level_ + 1, insert_stmt_real_6_0_2_0_1_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ <> ]
  private static boolean insert_stmt_real_7(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "insert_stmt_real_7")) return false;
    mergeKeySelectorExt(builder_, level_ + 1, HsqlParser::merge_key_selector_real);
    return true;
  }

  /* ********************************************************** */
  // 'INTEGER' | 'INT'
  public static boolean int_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "int_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, INT_DATA_TYPE, "");
    result_ = consumeToken(builder_, "INTEGER");
    if (!result_) result_ = consumeToken(builder_, "INT");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // 'INTERVAL' <>
  public static boolean interval_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "interval_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, INTERVAL_DATA_TYPE, "");
    result_ = consumeToken(builder_, "INTERVAL");
    result_ = result_ && intervalQualifierExt(builder_, level_ + 1, HsqlParser::interval_qualifier_real);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // <> TO <> | <>
  public static boolean interval_qualifier_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "interval_qualifier_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, INTERVAL_QUALIFIER, "");
    result_ = interval_qualifier_real_0(builder_, level_ + 1);
    if (!result_) result_ = singleDatetimeFieldExt(builder_, level_ + 1, HsqlParser::single_datetime_field_real);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // <> TO <>
  private static boolean interval_qualifier_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "interval_qualifier_real_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = startFieldExt(builder_, level_ + 1, HsqlParser::start_field_real);
    result_ = result_ && consumeToken(builder_, TO);
    result_ = result_ && endFieldExt(builder_, level_ + 1, HsqlParser::end_field_real);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // KEY LP <>>> RP
  public static boolean merge_key_selector_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "merge_key_selector_real")) return false;
    if (!nextTokenIs(builder_, KEY)) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeTokens(builder_, 0, KEY, LP);
    result_ = result_ && columnNameExt(builder_, level_ + 1, merge_key_selector_real_2_0_parser_);
    result_ = result_ && consumeToken(builder_, RP);
    exit_section_(builder_, marker_, MERGE_KEY_SELECTOR, result_);
    return result_;
  }

  /* ********************************************************** */
  // 'K' | 'M' | 'G'
  public static boolean multiplier_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "multiplier_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, MULTIPLIER, "");
    result_ = consumeToken(builder_, "K");
    if (!result_) result_ = consumeToken(builder_, "M");
    if (!result_) result_ = consumeToken(builder_, "G");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // 'YEAR' | 'MONTH' | 'DAY' | 'HOUR' | 'MINUTE'
  public static boolean non_second_primary_datetime_field_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "non_second_primary_datetime_field_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, NON_SECOND_PRIMARY_DATETIME_FIELD, "");
    result_ = consumeToken(builder_, "YEAR");
    if (!result_) result_ = consumeToken(builder_, "MONTH");
    if (!result_) result_ = consumeToken(builder_, "DAY");
    if (!result_) result_ = consumeToken(builder_, "HOUR");
    if (!result_) result_ = consumeToken(builder_, "MINUTE");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // <> | <> | <> | <> | <> | <>
  public static boolean overrides_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "overrides_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, OVERRIDES, "");
    result_ = typeNameExt(builder_, level_ + 1, HsqlParser::type_name_real);
    if (!result_) result_ = columnConstraintExt(builder_, level_ + 1, HsqlParser::column_constraint_real);
    if (!result_) result_ = bindParameterExt(builder_, level_ + 1, HsqlParser::bind_parameter_real);
    if (!result_) result_ = insertStmtExt(builder_, level_ + 1, HsqlParser::insert_stmt_real);
    if (!result_) result_ = resultColumnExt(builder_, level_ + 1, HsqlParser::result_column_real);
    if (!result_) result_ = generatedClauseExt(builder_, level_ + 1, HsqlParser::generated_clause_real);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // digit
  public static boolean precision_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "precision_real")) return false;
    if (!nextTokenIs(builder_, DIGIT)) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, DIGIT);
    exit_section_(builder_, marker_, PRECISION, result_);
    return result_;
  }

  /* ********************************************************** */
  // MULTIPLY
  //                   | <>>> DOT MULTIPLY
  //                   | (<> | <>) [ [ AS ] <>>> ]
  public static boolean result_column_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "result_column_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, RESULT_COLUMN, "");
    result_ = consumeToken(builder_, MULTIPLY);
    if (!result_) result_ = result_column_real_1(builder_, level_ + 1);
    if (!result_) result_ = result_column_real_2(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // <>>> DOT MULTIPLY
  private static boolean result_column_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "result_column_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = tableNameExt(builder_, level_ + 1, result_column_real_1_0_0_parser_);
    result_ = result_ && consumeTokens(builder_, 0, DOT, MULTIPLY);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // (<> | <>) [ [ AS ] <>>> ]
  private static boolean result_column_real_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "result_column_real_2")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = result_column_real_2_0(builder_, level_ + 1);
    result_ = result_ && result_column_real_2_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // <> | <>
  private static boolean result_column_real_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "result_column_real_2_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = windowFunctionInvocationExt(builder_, level_ + 1, HsqlParser::window_function_invocation_real);
    if (!result_) result_ = expr(builder_, level_ + 1, -1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ [ AS ] <>>> ]
  private static boolean result_column_real_2_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "result_column_real_2_1")) return false;
    result_column_real_2_1_0(builder_, level_ + 1);
    return true;
  }

  // [ AS ] <>>>
  private static boolean result_column_real_2_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "result_column_real_2_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = result_column_real_2_1_0_0(builder_, level_ + 1);
    result_ = result_ && columnAliasExt(builder_, level_ + 1, result_column_real_2_1_0_1_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ AS ]
  private static boolean result_column_real_2_1_0_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "result_column_real_2_1_0_0")) return false;
    consumeToken(builder_, AS);
    return true;
  }

  /* ********************************************************** */
  // <>
  static boolean root(PsiBuilder builder_, int level_) {
    return overridesExt(builder_, level_ + 1, HsqlParser::overrides_real);
  }

  /* ********************************************************** */
  // digit
  public static boolean scale_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "scale_real")) return false;
    if (!nextTokenIs(builder_, DIGIT)) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, DIGIT);
    exit_section_(builder_, marker_, SCALE, result_);
    return result_;
  }

  /* ********************************************************** */
  // <> [ LP digit RP ] | 'SECOND' [ LP digit [ COMMA digit ] RP ]
  public static boolean single_datetime_field_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "single_datetime_field_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, SINGLE_DATETIME_FIELD, "");
    result_ = single_datetime_field_real_0(builder_, level_ + 1);
    if (!result_) result_ = single_datetime_field_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // <> [ LP digit RP ]
  private static boolean single_datetime_field_real_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "single_datetime_field_real_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = nonSecondPrimaryDatetimeFieldExt(builder_, level_ + 1, HsqlParser::non_second_primary_datetime_field_real);
    result_ = result_ && single_datetime_field_real_0_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ LP digit RP ]
  private static boolean single_datetime_field_real_0_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "single_datetime_field_real_0_1")) return false;
    parseTokens(builder_, 0, LP, DIGIT, RP);
    return true;
  }

  // 'SECOND' [ LP digit [ COMMA digit ] RP ]
  private static boolean single_datetime_field_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "single_datetime_field_real_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "SECOND");
    result_ = result_ && single_datetime_field_real_1_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ LP digit [ COMMA digit ] RP ]
  private static boolean single_datetime_field_real_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "single_datetime_field_real_1_1")) return false;
    single_datetime_field_real_1_1_0(builder_, level_ + 1);
    return true;
  }

  // LP digit [ COMMA digit ] RP
  private static boolean single_datetime_field_real_1_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "single_datetime_field_real_1_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeTokens(builder_, 0, LP, DIGIT);
    result_ = result_ && single_datetime_field_real_1_1_0_2(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ COMMA digit ]
  private static boolean single_datetime_field_real_1_1_0_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "single_datetime_field_real_1_1_0_2")) return false;
    parseTokens(builder_, 0, COMMA, DIGIT);
    return true;
  }

  /* ********************************************************** */
  // 'SMALLINT'
  public static boolean small_int_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "small_int_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, SMALL_INT_DATA_TYPE, "");
    result_ = consumeToken(builder_, "SMALLINT");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // <> [ LP digit RP ]
  public static boolean start_field_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "start_field_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, START_FIELD, "");
    result_ = nonSecondPrimaryDatetimeFieldExt(builder_, level_ + 1, HsqlParser::non_second_primary_datetime_field_real);
    result_ = result_ && start_field_real_1(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  // [ LP digit RP ]
  private static boolean start_field_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "start_field_real_1")) return false;
    parseTokens(builder_, 0, LP, DIGIT, RP);
    return true;
  }

  /* ********************************************************** */
  // 'TINYINT'
  public static boolean tiny_int_data_type_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "tiny_int_data_type_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, TINY_INT_DATA_TYPE, "");
    result_ = consumeToken(builder_, "TINYINT");
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // <> |
  //   <> |
  //   <> |
  //   <> |
  //   <> |
  //   <> |
  //   <> |
  //   <> |
  //   <> |
  //   <> |
  //   <> |
  //   <>
  public static boolean type_name_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "type_name_real")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_, level_, _COLLAPSE_, TYPE_NAME, "");
    result_ = tinyIntDataTypeExt(builder_, level_ + 1, HsqlParser::tiny_int_data_type_real);
    if (!result_) result_ = smallIntDataTypeExt(builder_, level_ + 1, HsqlParser::small_int_data_type_real);
    if (!result_) result_ = intDataTypeExt(builder_, level_ + 1, HsqlParser::int_data_type_real);
    if (!result_) result_ = bigIntDataTypeExt(builder_, level_ + 1, HsqlParser::big_int_data_type_real);
    if (!result_) result_ = fixedPointDataTypeExt(builder_, level_ + 1, HsqlParser::fixed_point_data_type_real);
    if (!result_) result_ = approximateNumericDataTypeExt(builder_, level_ + 1, HsqlParser::approximate_numeric_data_type_real);
    if (!result_) result_ = booleanDataTypeExt(builder_, level_ + 1, HsqlParser::boolean_data_type_real);
    if (!result_) result_ = dateDataTypeExt(builder_, level_ + 1, HsqlParser::date_data_type_real);
    if (!result_) result_ = characterStringDataTypeExt(builder_, level_ + 1, HsqlParser::character_string_data_type_real);
    if (!result_) result_ = binaryStringDataTypeExt(builder_, level_ + 1, HsqlParser::binary_string_data_type_real);
    if (!result_) result_ = bitStringDataTypeExt(builder_, level_ + 1, HsqlParser::bit_string_data_type_real);
    if (!result_) result_ = intervalDataTypeExt(builder_, level_ + 1, HsqlParser::interval_data_type_real);
    exit_section_(builder_, level_, marker_, result_, false, null);
    return result_;
  }

  /* ********************************************************** */
  // LP [ <> ]
  //   [ PARTITION BY <> ( COMMA <> ) * ]
  //   [ ORDER BY <>>> ( COMMA <>>> ) * ]
  //   [ <> ]
  // RP
  public static boolean window_defn_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real")) return false;
    if (!nextTokenIs(builder_, LP)) return false;
    boolean result_, pinned_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, WINDOW_DEFN, null);
    result_ = consumeToken(builder_, LP);
    pinned_ = result_; // pin = 1
    result_ = result_ && report_error_(builder_, window_defn_real_1(builder_, level_ + 1));
    result_ = pinned_ && report_error_(builder_, window_defn_real_2(builder_, level_ + 1)) && result_;
    result_ = pinned_ && report_error_(builder_, window_defn_real_3(builder_, level_ + 1)) && result_;
    result_ = pinned_ && report_error_(builder_, window_defn_real_4(builder_, level_ + 1)) && result_;
    result_ = pinned_ && consumeToken(builder_, RP) && result_;
    exit_section_(builder_, level_, marker_, result_, pinned_, null);
    return result_ || pinned_;
  }

  // [ <> ]
  private static boolean window_defn_real_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_1")) return false;
    baseWindowNameExt(builder_, level_ + 1, HsqlParser::base_window_name_real);
    return true;
  }

  // [ PARTITION BY <> ( COMMA <> ) * ]
  private static boolean window_defn_real_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_2")) return false;
    window_defn_real_2_0(builder_, level_ + 1);
    return true;
  }

  // PARTITION BY <> ( COMMA <> ) *
  private static boolean window_defn_real_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_2_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeTokens(builder_, 0, PARTITION, BY);
    result_ = result_ && expr(builder_, level_ + 1, -1);
    result_ = result_ && window_defn_real_2_0_3(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ( COMMA <> ) *
  private static boolean window_defn_real_2_0_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_2_0_3")) return false;
    while (true) {
      int pos_ = current_position_(builder_);
      if (!window_defn_real_2_0_3_0(builder_, level_ + 1)) break;
      if (!empty_element_parsed_guard_(builder_, "window_defn_real_2_0_3", pos_)) break;
    }
    return true;
  }

  // COMMA <>
  private static boolean window_defn_real_2_0_3_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_2_0_3_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, COMMA);
    result_ = result_ && expr(builder_, level_ + 1, -1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ ORDER BY <>>> ( COMMA <>>> ) * ]
  private static boolean window_defn_real_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_3")) return false;
    window_defn_real_3_0(builder_, level_ + 1);
    return true;
  }

  // ORDER BY <>>> ( COMMA <>>> ) *
  private static boolean window_defn_real_3_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_3_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeTokens(builder_, 0, ORDER, BY);
    result_ = result_ && orderingTermExt(builder_, level_ + 1, window_defn_real_3_0_2_0_parser_);
    result_ = result_ && window_defn_real_3_0_3(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ( COMMA <>>> ) *
  private static boolean window_defn_real_3_0_3(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_3_0_3")) return false;
    while (true) {
      int pos_ = current_position_(builder_);
      if (!window_defn_real_3_0_3_0(builder_, level_ + 1)) break;
      if (!empty_element_parsed_guard_(builder_, "window_defn_real_3_0_3", pos_)) break;
    }
    return true;
  }

  // COMMA <>>>
  private static boolean window_defn_real_3_0_3_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_3_0_3_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, COMMA);
    result_ = result_ && orderingTermExt(builder_, level_ + 1, window_defn_real_3_0_3_0_1_0_parser_);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ <> ]
  private static boolean window_defn_real_4(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_defn_real_4")) return false;
    frameSpecExt(builder_, level_ + 1, HsqlParser::frame_spec_real);
    return true;
  }

  /* ********************************************************** */
  // id
  public static boolean window_func_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_func_real")) return false;
    if (!nextTokenIs(builder_, ID)) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, ID);
    exit_section_(builder_, marker_, WINDOW_FUNC, result_);
    return result_;
  }

  /* ********************************************************** */
  // <> LP [ MULTIPLY | ( <> ( COMMA <> ) * ) ] RP [ 'FILTER' LP WHERE <> RP] 'OVER' ( <> | <>)
  public static boolean window_function_invocation_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real")) return false;
    boolean result_, pinned_;
    Marker marker_ = enter_section_(builder_, level_, _NONE_, WINDOW_FUNCTION_INVOCATION, "");
    result_ = windowFuncExt(builder_, level_ + 1, HsqlParser::window_func_real);
    result_ = result_ && consumeToken(builder_, LP);
    result_ = result_ && window_function_invocation_real_2(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, RP);
    result_ = result_ && window_function_invocation_real_4(builder_, level_ + 1);
    result_ = result_ && consumeToken(builder_, "OVER");
    pinned_ = result_; // pin = 6
    result_ = result_ && window_function_invocation_real_6(builder_, level_ + 1);
    exit_section_(builder_, level_, marker_, result_, pinned_, null);
    return result_ || pinned_;
  }

  // [ MULTIPLY | ( <> ( COMMA <> ) * ) ]
  private static boolean window_function_invocation_real_2(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real_2")) return false;
    window_function_invocation_real_2_0(builder_, level_ + 1);
    return true;
  }

  // MULTIPLY | ( <> ( COMMA <> ) * )
  private static boolean window_function_invocation_real_2_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real_2_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, MULTIPLY);
    if (!result_) result_ = window_function_invocation_real_2_0_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // <> ( COMMA <> ) *
  private static boolean window_function_invocation_real_2_0_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real_2_0_1")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = expr(builder_, level_ + 1, -1);
    result_ = result_ && window_function_invocation_real_2_0_1_1(builder_, level_ + 1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // ( COMMA <> ) *
  private static boolean window_function_invocation_real_2_0_1_1(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real_2_0_1_1")) return false;
    while (true) {
      int pos_ = current_position_(builder_);
      if (!window_function_invocation_real_2_0_1_1_0(builder_, level_ + 1)) break;
      if (!empty_element_parsed_guard_(builder_, "window_function_invocation_real_2_0_1_1", pos_)) break;
    }
    return true;
  }

  // COMMA <>
  private static boolean window_function_invocation_real_2_0_1_1_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real_2_0_1_1_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, COMMA);
    result_ = result_ && expr(builder_, level_ + 1, -1);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // [ 'FILTER' LP WHERE <> RP]
  private static boolean window_function_invocation_real_4(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real_4")) return false;
    window_function_invocation_real_4_0(builder_, level_ + 1);
    return true;
  }

  // 'FILTER' LP WHERE <> RP
  private static boolean window_function_invocation_real_4_0(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real_4_0")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, "FILTER");
    result_ = result_ && consumeTokens(builder_, 0, LP, WHERE);
    result_ = result_ && expr(builder_, level_ + 1, -1);
    result_ = result_ && consumeToken(builder_, RP);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  // <> | <>
  private static boolean window_function_invocation_real_6(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_function_invocation_real_6")) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = windowDefnExt(builder_, level_ + 1, HsqlParser::window_defn_real);
    if (!result_) result_ = windowNameExt(builder_, level_ + 1, HsqlParser::window_name_real);
    exit_section_(builder_, marker_, null, result_);
    return result_;
  }

  /* ********************************************************** */
  // id
  public static boolean window_name_real(PsiBuilder builder_, int level_) {
    if (!recursion_guard_(builder_, level_, "window_name_real")) return false;
    if (!nextTokenIs(builder_, ID)) return false;
    boolean result_;
    Marker marker_ = enter_section_(builder_);
    result_ = consumeToken(builder_, ID);
    exit_section_(builder_, marker_, WINDOW_NAME, result_);
    return result_;
  }

  static final Parser bind_parameter_real_1_1_1_0_parser_ = (builder_, level_) -> identifier_real(builder_, level_ + 1);
  static final Parser column_constraint_real_0_0_1_0_parser_ = bind_parameter_real_1_1_1_0_parser_;
  static final Parser column_constraint_real_1_1_3_0_parser_ = (builder_, level_) -> conflict_clause_real(builder_, level_ + 1);
  static final Parser column_constraint_real_1_2_2_0_parser_ = column_constraint_real_1_1_3_0_parser_;
  static final Parser column_constraint_real_1_3_1_0_parser_ = column_constraint_real_1_1_3_0_parser_;
  static final Parser column_constraint_real_1_4_0_parser_ = (builder_, level_) -> check_constraint_real(builder_, level_ + 1);
  static final Parser column_constraint_real_1_6_0_parser_ = (builder_, level_) -> default_constraint_real(builder_, level_ + 1);
  static final Parser column_constraint_real_1_7_1_0_parser_ = (builder_, level_) -> collation_name_real(builder_, level_ + 1);
  static final Parser column_constraint_real_1_8_0_parser_ = (builder_, level_) -> foreign_key_clause_real(builder_, level_ + 1);
  static final Parser insert_stmt_real_0_0_0_parser_ = (builder_, level_) -> with_clause_real(builder_, level_ + 1);
  static final Parser insert_stmt_real_3_0_0_0_parser_ = (builder_, level_) -> database_name_real(builder_, level_ + 1);
  static final Parser insert_stmt_real_4_0_parser_ = (builder_, level_) -> table_name_real(builder_, level_ + 1);
  static final Parser insert_stmt_real_5_0_1_0_parser_ = (builder_, level_) -> table_alias_real(builder_, level_ + 1);
  static final Parser insert_stmt_real_6_0_1_0_parser_ = (builder_, level_) -> column_name_real(builder_, level_ + 1);
  static final Parser insert_stmt_real_6_0_2_0_1_0_parser_ = insert_stmt_real_6_0_1_0_parser_;
  static final Parser insert_stmt_real_8_0_parser_ = (builder_, level_) -> insert_stmt_values_real(builder_, level_ + 1);
  static final Parser merge_key_selector_real_2_0_parser_ = insert_stmt_real_6_0_1_0_parser_;
  static final Parser result_column_real_1_0_0_parser_ = insert_stmt_real_4_0_parser_;
  static final Parser result_column_real_2_1_0_1_0_parser_ = (builder_, level_) -> column_alias_real(builder_, level_ + 1);
  static final Parser window_defn_real_3_0_2_0_parser_ = (builder_, level_) -> ordering_term_real(builder_, level_ + 1);
  static final Parser window_defn_real_3_0_3_0_1_0_parser_ = window_defn_real_3_0_2_0_parser_;
}