// Code generated by tools/gen_meta.py. DO NOT EDIT.

///|
/// Every expression class of sqlglot, including abstract traits.
pub(all) enum Kind {
  AIAgg
  AIClassify
  AIEmbed
  AIForecast
  AIGenerate
  AISimilarity
  AISummarizeAgg
  Abs
  Acos
  Acosh
  Add
  AddConstraint
  AddMonths
  AddPartition
  Adjacent
  Agg
  AggFunc
  AlgorithmProperty
  Alias
  Aliases
  All
  AllowedValuesProperty
  Alter
  AlterColumn
  AlterDistStyle
  AlterIndex
  AlterModifySqlSecurity
  AlterRename
  AlterSession
  AlterSet
  AlterSortKey
  Analyze
  AnalyzeColumns
  AnalyzeDelete
  AnalyzeHistogram
  AnalyzeListChainedRows
  AnalyzeSample
  AnalyzeStatistics
  AnalyzeValidate
  AnalyzeWith
  And
  Anonymous
  AnonymousAggFunc
  Any
  AnyValue
  ApiProperty
  ApplicationProperty
  Apply
  ApproxDistinct
  ApproxPercentileAccumulate
  ApproxPercentileCombine
  ApproxPercentileEstimate
  ApproxQuantile
  ApproxQuantiles
  ApproxTopK
  ApproxTopKAccumulate
  ApproxTopKCombine
  ApproxTopKEstimate
  ApproxTopSum
  ApproximateSimilarity
  ArgMax
  ArgMin
  Array
  ArrayAgg
  ArrayAll
  ArrayAny
  ArrayAppend
  ArrayCompact
  ArrayConcat
  ArrayConcatAgg
  ArrayConstructCompact
  ArrayContainedBy
  ArrayContains
  ArrayContainsAll
  ArrayDistinct
  ArrayExcept
  ArrayFilter
  ArrayFirst
  ArrayInsert
  ArrayIntersect
  ArrayLast
  ArrayMax
  ArrayMin
  ArrayOverlaps
  ArrayPosition
  ArrayPrepend
  ArrayRemove
  ArrayRemoveAt
  ArrayReverse
  ArraySize
  ArraySlice
  ArraySort
  ArraySum
  ArrayToString
  ArrayUnionAgg
  ArrayUniqueAgg
  ArraysZip
  Ascii
  Asin
  Asinh
  AssumeColumnConstraint
  AtIndex
  AtTimeZone
  Atan
  Atan2
  Atanh
  Attach
  AttachOption
  AutoIncrementColumnConstraint
  AutoIncrementProperty
  AutoRefreshProperty
  Avg
  BackupProperty
  Base64DecodeBinary
  Base64DecodeString
  Base64Encode
  Between
  Binary
  BinaryColumnConstraint
  BitLength
  BitString
  BitmapBitPosition
  BitmapBucketNumber
  BitmapConstructAgg
  BitmapCount
  BitmapOrAgg
  BitwiseAnd
  BitwiseAndAgg
  BitwiseCount
  BitwiseLeftShift
  BitwiseNot
  BitwiseOr
  BitwiseOrAgg
  BitwiseRightShift
  BitwiseXor
  BitwiseXorAgg
  Block
  BlockCompressionProperty
  Booland
  Boolean
  Boolnot
  Boolor
  BoolxorAgg
  Bracket
  BuildProperty
  ByteLength
  ByteString
  CTE
  Cache
  CalledOnNullInputProperty
  Case
  CaseSpecificColumnConstraint
  CaseStatement
  Cast
  CastToStrType
  CatalogProperty
  Cbrt
  Ceil
  Changes
  CharacterSet
  CharacterSetColumnConstraint
  CharacterSetProperty
  Check
  CheckColumnConstraint
  CheckJson
  CheckXml
  ChecksumProperty
  Chr
  CityHash64
  Clone
  Cluster
  ClusterProperty
  ClusteredByProperty
  ClusteredColumnConstraint
  Coalesce
  CodePointsToBytes
  CodePointsToString
  Collate
  CollateColumnConstraint
  CollateProperty
  Collation
  Column
  ColumnConstraint
  ColumnConstraintKind
  ColumnDef
  ColumnPosition
  ColumnPrefix
  Columns
  CombinedAggFunc
  CombinedParameterizedAgg
  Command
  Comment
  CommentColumnConstraint
  Commit
  Comprehension
  Compress
  CompressColumnConstraint
  ComputeProperty
  ComputedColumnConstraint
  Concat
  ConcatWs
  Condition
  ConditionalInsert
  Connect
  ConnectByRoot
  Connector
  Constraint
  Contains
  Convert
  ConvertTimezone
  ConvertToCharset
  Copy
  CopyGrantsProperty
  CopyParameter
  Corr
  Cos
  Cosh
  CosineDistance
  Cot
  Coth
  Count
  CountIf
  CovarPop
  CovarSamp
  Create
  Credentials
  CredentialsProperty
  Csc
  Csch
  Cube
  CumeDist
  CurrentAccount
  CurrentAccountName
  CurrentAvailableRoles
  CurrentCatalog
  CurrentClient
  CurrentDatabase
  CurrentDate
  CurrentDatetime
  CurrentIpAddress
  CurrentOrganizationName
  CurrentOrganizationUser
  CurrentRegion
  CurrentRole
  CurrentRoleType
  CurrentSchema
  CurrentSchemas
  CurrentSecondaryRoles
  CurrentSession
  CurrentStatement
  CurrentTime
  CurrentTimestamp
  CurrentTimestampLTZ
  CurrentTimezone
  CurrentTransaction
  CurrentUser
  CurrentUserId
  CurrentVersion
  CurrentWarehouse
  DDL
  DML
  DPipe
  DataBlocksizeProperty
  DataDeletionProperty
  DataType
  DataTypeParam
  DatabaseProperty
  Date
  DateAdd
  DateBin
  DateDiff
  DateFormatColumnConstraint
  DateFromParts
  DateFromUnixDate
  DateStrToDate
  DateSub
  DateToDateStr
  DateToDi
  DateTrunc
  Datetime
  DatetimeAdd
  DatetimeDiff
  DatetimeSub
  DatetimeTrunc
  Day
  DayOfMonth
  DayOfWeek
  DayOfWeekIso
  DayOfYear
  Dayname
  Declare
  DeclareItem
  Decode
  DecodeCase
  DecompressBinary
  DecompressString
  Decrypt
  DecryptRaw
  DefaultColumnConstraint
  DefinerProperty
  Degrees
  Delete
  DenseRank
  DerivedTable
  Describe
  Detach
  DiToDate
  DictProperty
  DictRange
  DictSubProperty
  Directory
  DirectoryStage
  DistKeyProperty
  DistStyleProperty
  Distance
  DistanceNd
  Distinct
  Distribute
  DistributedByProperty
  Div
  Dot
  DotProduct
  Drop
  DropPartition
  DropPrimaryKey
  DuplicateKeyProperty
  DynamicIdentifier
  DynamicProperty
  EQ
  Elt
  EmptyProperty
  Encode
  EncodeColumnConstraint
  EncodeProperty
  Encrypt
  EncryptRaw
  EndStatement
  EndsWith
  EngineProperty
  EnviromentProperty
  EphemeralColumnConstraint
  EqualNull
  Escape
  EuclideanDistance
  Except
  ExcludeColumnConstraint
  Execute
  ExecuteAsProperty
  ExecuteSql
  Exists
  Exp
  Explode
  ExplodeOuter
  ExplodingGenerateSeries
  Export
  Expression
  ExtendsLeft
  ExtendsRight
  ExternalProperty
  Extract
  Factorial
  FallbackProperty
  FarmFingerprint
  FeaturesAtTime
  Fetch
  FileFormatProperty
  Filter
  Final
  First
  FirstValue
  Flatten
  Float64
  Floor
  ForClause
  ForIn
  ForceProperty
  ForeignKey
  Format
  FormatJson
  FormatPhrase
  FreespaceProperty
  From
  FromBase
  FromBase32
  FromBase64
  FromISO8601Date
  FromISO8601Timestamp
  FromISO8601TimestampNanos
  FromJson
  FromTimeZone
  Func
  FunctionSpecification
  GT
  GTE
  GapFill
  GenerateBool
  GenerateDateArray
  GenerateDouble
  GenerateEmbedding
  GenerateInt
  GenerateSeries
  GenerateTable
  GenerateText
  GenerateTimestampArray
  GeneratedAsIdentityColumnConstraint
  GeneratedAsRowColumnConstraint
  Generator
  Get
  GetExtract
  GetIgnoreCase
  Getbit
  Glob
  GlobalProperty
  Grant
  GrantPrincipal
  GrantPrivilege
  Greatest
  Group
  GroupConcat
  Grouping
  GroupingId
  GroupingSets
  HandlerProperty
  HashAgg
  Having
  HavingMax
  HeapProperty
  Heredoc
  Hex
  HexDecodeString
  HexString
  Hint
  HistoricalData
  Hll
  Host
  Hour
  HybridProperty
  ILike
  IcebergProperty
  Identifier
  If
  IfBlock
  IgnoreNulls
  In
  InOutColumnConstraint
  IncludeProperty
  Index
  IndexColumnConstraint
  IndexConstraintOption
  IndexParameters
  IndexTableHint
  InheritsProperty
  Initcap
  Inline
  InlineLengthColumnConstraint
  InputModelProperty
  InputOutputFormat
  Insert
  Install
  Int64
  IntDiv
  Intersect
  Interval
  IntervalOp
  IntervalSpan
  Into
  Introducer
  InvisibleColumnConstraint
  Is
  IsArray
  IsAscii
  IsInf
  IsNan
  IsNullValue
  IsolatedLoadingProperty
  Iterate
  JSON
  JSONArray
  JSONArrayAgg
  JSONArrayAppend
  JSONArrayContains
  JSONArrayInsert
  JSONBContains
  JSONBContainsAllTopKeys
  JSONBContainsAnyTopKeys
  JSONBContainsTopKey
  JSONBDeleteAtPath
  JSONBExists
  JSONBExtract
  JSONBExtractScalar
  JSONBObjectAgg
  JSONBPathExists
  JSONBool
  JSONCast
  JSONColumnDef
  JSONExists
  JSONExtract
  JSONExtractArray
  JSONExtractQuote
  JSONExtractScalar
  JSONFormat
  JSONKeyValue
  JSONKeys
  JSONKeysAtDepth
  JSONObject
  JSONObjectAgg
  JSONPath
  JSONPathFilter
  JSONPathKey
  JSONPathPart
  JSONPathRecursive
  JSONPathRoot
  JSONPathScript
  JSONPathSelector
  JSONPathSlice
  JSONPathSubscript
  JSONPathUnion
  JSONPathWildcard
  JSONRemove
  JSONSchema
  JSONSet
  JSONStripNulls
  JSONTable
  JSONType
  JSONValue
  JSONValueArray
  JarowinklerSimilarity
  Join
  JoinHint
  JournalProperty
  JustifyDays
  JustifyHours
  JustifyInterval
  Kill
  Kurtosis
  Kwarg
  LT
  LTE
  Lag
  Lambda
  LanguageProperty
  Last
  LastDay
  LastValue
  Lateral
  LaxBool
  LaxFloat64
  LaxInt64
  LaxString
  Lead
  Least
  Leave
  Left
  Length
  Levenshtein
  Like
  LikeProperty
  Limit
  LimitOptions
  List
  Literal
  Ln
  LoadData
  Localtime
  Localtimestamp
  LocationProperty
  Lock
  LockProperty
  LockingProperty
  LockingStatement
  Log
  LogProperty
  LogicalAnd
  LogicalOr
  LoopBlock
  Lower
  LowerHex
  MD5
  MD5Digest
  MD5NumberLower64
  MD5NumberUpper64
  MLForecast
  MLTranslate
  MacroOverload
  MacroOverloads
  MakeInterval
  ManhattanDistance
  Map
  MapCat
  MapContainsKey
  MapDelete
  MapFromEntries
  MapInsert
  MapKeys
  MapPick
  MapSize
  MaskingPolicyColumnConstraint
  MaskingProperty
  Match
  MatchAgainst
  MatchRecognize
  MatchRecognizeMeasure
  MaterializedProperty
  Max
  Median
  Merge
  MergeBlockRatioProperty
  MergeTreeTTL
  MergeTreeTTLAction
  Min
  Minhash
  MinhashCombine
  Minute
  Mod
  Mode
  ModelAttribute
  ModifyColumn
  ModuleProperty
  Month
  Monthname
  MonthsBetween
  Mul
  MultitableInserts
  NEQ
  Nanvl
  National
  Neg
  Negative
  NestedJSONSelect
  NetFunc
  NetworkProperty
  NextDay
  NextValueFor
  NoPrimaryIndexProperty
  NonClusteredColumnConstraint
  Normal
  Normalize
  Not
  NotForReplicationColumnConstraint
  NotNullColumnConstraint
  NthValue
  Ntile
  Null
  NullSafeEQ
  NullSafeNEQ
  Nullif
  NumberToStr
  Nvl2
  ObjectAgg
  ObjectId
  ObjectIdentifier
  ObjectInsert
  ObjectTransform
  Offset
  OnCluster
  OnCommitProperty
  OnCondition
  OnConflict
  OnProperty
  OnUpdateColumnConstraint
  Opclass
  OpenJSON
  OpenJSONColumnDef
  Operator
  Or
  Order
  Ordered
  OutputModelProperty
  OverflowTruncateBehavior
  Overlaps
  Overlay
  Pad
  Parameter
  ParameterStyleProperty
  ParameterizedAgg
  Paren
  ParseBignumeric
  ParseDatetime
  ParseIp
  ParseJSON
  ParseNumeric
  ParseTime
  ParseUrl
  Partition
  PartitionBoundSpec
  PartitionByListProperty
  PartitionByRangeProperty
  PartitionByRangePropertyDynamic
  PartitionByTruncate
  PartitionId
  PartitionList
  PartitionRange
  PartitionedByBucket
  PartitionedByProperty
  PartitionedOfProperty
  PathColumnConstraint
  PercentRank
  PercentileCont
  PercentileDisc
  PeriodForSystemTimeConstraint
  Pi
  Pivot
  PivotAlias
  PivotAny
  Placeholder
  Posexplode
  PosexplodeOuter
  PositionalColumn
  Pow
  Pragma
  PreWhere
  Predicate
  Predict
  PreviousDay
  PrimaryKey
  PrimaryKeyColumnConstraint
  Prior
  ProjectionDef
  ProjectionPolicyColumnConstraint
  Properties
  Property
  PropertyEQ
  PseudoType
  Pseudocolumn
  Put
  Qualify
  Quantile
  Quarter
  Query
  QueryBand
  QueryOption
  QueryTransform
  Radians
  Rand
  Randn
  Randstr
  RangeBucket
  RangeN
  Rank
  RawString
  ReadCSV
  ReadParquet
  RecursiveWithSearch
  Reduce
  Reference
  Refresh
  RefreshTriggerProperty
  RegDomain
  RegexpCount
  RegexpExtract
  RegexpExtractAll
  RegexpFullMatch
  RegexpILike
  RegexpInstr
  RegexpLike
  RegexpReplace
  RegexpSplit
  RegexpSubstr
  RegrAvgx
  RegrAvgy
  RegrCount
  RegrIntercept
  RegrR2
  RegrSlope
  RegrSxx
  RegrSxy
  RegrSyy
  RegrValx
  RegrValy
  RemoteWithConnectionModelProperty
  RenameColumn
  RenameIndex
  Repeat
  RepeatBlock
  Replace
  ReplacePartition
  RespectNulls
  Return
  Returning
  ReturnsProperty
  Reverse
  Revoke
  Right
  Rint
  Rollback
  Rollup
  RollupIndex
  RollupProperty
  Round
  RowAccessProperty
  RowFormatDelimitedProperty
  RowFormatProperty
  RowFormatSerdeProperty
  RowNumber
  RtrimmedLength
  SHA
  SHA1Digest
  SHA2
  SHA2Digest
  SafeAdd
  SafeConvertBytesToString
  SafeDivide
  SafeFunc
  SafeMultiply
  SafeNegate
  SafeSubtract
  SampleProperty
  Schema
  SchemaCommentProperty
  ScopeResolution
  Search
  SearchIp
  Sec
  Sech
  Second
  Secret
  SecureProperty
  SecurityIntegrationProperty
  Select
  Selectable
  SemanticView
  Semicolon
  Seq1
  Seq2
  Seq4
  Seq8
  SequenceProperties
  SerdeProperties
  SessionParameter
  SessionUser
  Set
  SetConfigProperty
  SetItem
  SetOperation
  SetProperty
  SettingsProperty
  SharingProperty
  Show
  Shuffle
  Sign
  SimilarTo
  Sin
  Sinh
  Skewness
  SkipJSONColumn
  Slice
  Sort
  SortArray
  SortKeyProperty
  Soundex
  SoundexP123
  Space
  Split
  SplitPart
  SqlReadWriteProperty
  SqlSecurityProperty
  Sqrt
  StDistance
  StPoint
  StabilityProperty
  Stack
  StandardHash
  Star
  StarMap
  StartsWith
  Stddev
  StddevPop
  StddevSamp
  StorageHandlerProperty
  StoredProcedure
  StrPosition
  StrToDate
  StrToMap
  StrToTime
  StrToUnix
  Stream
  StreamingTableProperty
  StrictProperty
  String
  StringToArray
  StripNullValue
  Strtok
  StrtokToArray
  Struct
  StructExtract
  Stuff
  Sub
  Subquery
  SubqueryPredicate
  Substring
  SubstringIndex
  Sum
  Summarize
  SwapTable
  Systimestamp
  Table
  TableAlias
  TableColumn
  TableFromRows
  TableSample
  Tag
  Tags
  Tan
  Tanh
  TemporaryProperty
  Time
  TimeAdd
  TimeDiff
  TimeFromParts
  TimeSlice
  TimeStrToDate
  TimeStrToTime
  TimeStrToUnix
  TimeSub
  TimeToStr
  TimeToTimeStr
  TimeToUnix
  TimeTrunc
  TimeUnit
  TimeseriesKey
  Timestamp
  TimestampAdd
  TimestampDiff
  TimestampFromParts
  TimestampLtzFromParts
  TimestampSub
  TimestampTrunc
  TimestampTzFromParts
  TitleColumnConstraint
  ToArray
  ToBase32
  ToBase64
  ToBinary
  ToBoolean
  ToChar
  ToCodePoints
  ToDays
  ToDecfloat
  ToDouble
  ToFile
  ToMap
  ToNumber
  ToTableProperty
  ToVariant
  Transaction
  Transform
  TransformModelProperty
  TransientProperty
  Translate
  TranslateCharacters
  TriggerEvent
  TriggerExecute
  TriggerProperties
  TriggerReferencing
  Trim
  Trunc
  TruncateTable
  Try
  TryBase64DecodeBinary
  TryBase64DecodeString
  TryCast
  TryHexDecodeBinary
  TryHexDecodeString
  TryToDecfloat
  TsOrDiToDi
  TsOrDsAdd
  TsOrDsDiff
  TsOrDsToDate
  TsOrDsToDateStr
  TsOrDsToDatetime
  TsOrDsToTime
  TsOrDsToTimestamp
  Tuple
  Typeof
  UDTF
  Unary
  Uncache
  Undrop
  Unhex
  Unicode
  UnicodeString
  Uniform
  Union
  UniqueColumnConstraint
  UniqueKeyProperty
  UnixDate
  UnixMicros
  UnixMillis
  UnixSeconds
  UnixToStr
  UnixToTime
  UnixToTimeStr
  UnloggedProperty
  Unnest
  UnpivotColumns
  Update
  Upper
  UppercaseColumnConstraint
  Use
  UserDefinedFunction
  UsingData
  UsingProperty
  UsingTemplateProperty
  UtcDate
  UtcTime
  UtcTimestamp
  Uuid
  UuidProperty
  Values
  Var
  VarMap
  Variadic
  Variance
  VariancePop
  VectorSearch
  Version
  ViewAttributeProperty
  VirtualProperty
  VolatileProperty
  WatermarkColumnConstraint
  Week
  WeekOfYear
  WeekStart
  When
  Whens
  Where
  WhileBlock
  WidthBucket
  Window
  WindowSpec
  With
  WithDataProperty
  WithFill
  WithJournalTableProperty
  WithOperator
  WithProcedureOptions
  WithSchemaBindingProperty
  WithSystemVersioningProperty
  WithTableHint
  WithinGroup
  XMLElement
  XMLGet
  XMLKeyValueOption
  XMLNamespace
  XMLTable
  Xor
  Year
  YearOfWeek
  YearOfWeekIso
  ZeroFillColumnConstraint
  Zipf
  PrivExplodeOuter
  PrivTimeUnit
} derive(Eq, Hash)

///|
pub fn Kind::id(self : Kind) -> Int {
  match self {
    AIAgg => 0
    AIClassify => 1
    AIEmbed => 2
    AIForecast => 3
    AIGenerate => 4
    AISimilarity => 5
    AISummarizeAgg => 6
    Abs => 7
    Acos => 8
    Acosh => 9
    Add => 10
    AddConstraint => 11
    AddMonths => 12
    AddPartition => 13
    Adjacent => 14
    Agg => 15
    AggFunc => 16
    AlgorithmProperty => 17
    Alias => 18
    Aliases => 19
    All => 20
    AllowedValuesProperty => 21
    Alter => 22
    AlterColumn => 23
    AlterDistStyle => 24
    AlterIndex => 25
    AlterModifySqlSecurity => 26
    AlterRename => 27
    AlterSession => 28
    AlterSet => 29
    AlterSortKey => 30
    Analyze => 31
    AnalyzeColumns => 32
    AnalyzeDelete => 33
    AnalyzeHistogram => 34
    AnalyzeListChainedRows => 35
    AnalyzeSample => 36
    AnalyzeStatistics => 37
    AnalyzeValidate => 38
    AnalyzeWith => 39
    And => 40
    Anonymous => 41
    AnonymousAggFunc => 42
    Any => 43
    AnyValue => 44
    ApiProperty => 45
    ApplicationProperty => 46
    Apply => 47
    ApproxDistinct => 48
    ApproxPercentileAccumulate => 49
    ApproxPercentileCombine => 50
    ApproxPercentileEstimate => 51
    ApproxQuantile => 52
    ApproxQuantiles => 53
    ApproxTopK => 54
    ApproxTopKAccumulate => 55
    ApproxTopKCombine => 56
    ApproxTopKEstimate => 57
    ApproxTopSum => 58
    ApproximateSimilarity => 59
    ArgMax => 60
    ArgMin => 61
    Array => 62
    ArrayAgg => 63
    ArrayAll => 64
    ArrayAny => 65
    ArrayAppend => 66
    ArrayCompact => 67
    ArrayConcat => 68
    ArrayConcatAgg => 69
    ArrayConstructCompact => 70
    ArrayContainedBy => 71
    ArrayContains => 72
    ArrayContainsAll => 73
    ArrayDistinct => 74
    ArrayExcept => 75
    ArrayFilter => 76
    ArrayFirst => 77
    ArrayInsert => 78
    ArrayIntersect => 79
    ArrayLast => 80
    ArrayMax => 81
    ArrayMin => 82
    ArrayOverlaps => 83
    ArrayPosition => 84
    ArrayPrepend => 85
    ArrayRemove => 86
    ArrayRemoveAt => 87
    ArrayReverse => 88
    ArraySize => 89
    ArraySlice => 90
    ArraySort => 91
    ArraySum => 92
    ArrayToString => 93
    ArrayUnionAgg => 94
    ArrayUniqueAgg => 95
    ArraysZip => 96
    Ascii => 97
    Asin => 98
    Asinh => 99
    AssumeColumnConstraint => 100
    AtIndex => 101
    AtTimeZone => 102
    Atan => 103
    Atan2 => 104
    Atanh => 105
    Attach => 106
    AttachOption => 107
    AutoIncrementColumnConstraint => 108
    AutoIncrementProperty => 109
    AutoRefreshProperty => 110
    Avg => 111
    BackupProperty => 112
    Base64DecodeBinary => 113
    Base64DecodeString => 114
    Base64Encode => 115
    Between => 116
    Binary => 117
    BinaryColumnConstraint => 118
    BitLength => 119
    BitString => 120
    BitmapBitPosition => 121
    BitmapBucketNumber => 122
    BitmapConstructAgg => 123
    BitmapCount => 124
    BitmapOrAgg => 125
    BitwiseAnd => 126
    BitwiseAndAgg => 127
    BitwiseCount => 128
    BitwiseLeftShift => 129
    BitwiseNot => 130
    BitwiseOr => 131
    BitwiseOrAgg => 132
    BitwiseRightShift => 133
    BitwiseXor => 134
    BitwiseXorAgg => 135
    Block => 136
    BlockCompressionProperty => 137
    Booland => 138
    Boolean => 139
    Boolnot => 140
    Boolor => 141
    BoolxorAgg => 142
    Bracket => 143
    BuildProperty => 144
    ByteLength => 145
    ByteString => 146
    CTE => 147
    Cache => 148
    CalledOnNullInputProperty => 149
    Case => 150
    CaseSpecificColumnConstraint => 151
    CaseStatement => 152
    Cast => 153
    CastToStrType => 154
    CatalogProperty => 155
    Cbrt => 156
    Ceil => 157
    Changes => 158
    CharacterSet => 159
    CharacterSetColumnConstraint => 160
    CharacterSetProperty => 161
    Check => 162
    CheckColumnConstraint => 163
    CheckJson => 164
    CheckXml => 165
    ChecksumProperty => 166
    Chr => 167
    CityHash64 => 168
    Clone => 169
    Cluster => 170
    ClusterProperty => 171
    ClusteredByProperty => 172
    ClusteredColumnConstraint => 173
    Coalesce => 174
    CodePointsToBytes => 175
    CodePointsToString => 176
    Collate => 177
    CollateColumnConstraint => 178
    CollateProperty => 179
    Collation => 180
    Column => 181
    ColumnConstraint => 182
    ColumnConstraintKind => 183
    ColumnDef => 184
    ColumnPosition => 185
    ColumnPrefix => 186
    Columns => 187
    CombinedAggFunc => 188
    CombinedParameterizedAgg => 189
    Command => 190
    Comment => 191
    CommentColumnConstraint => 192
    Commit => 193
    Comprehension => 194
    Compress => 195
    CompressColumnConstraint => 196
    ComputeProperty => 197
    ComputedColumnConstraint => 198
    Concat => 199
    ConcatWs => 200
    Condition => 201
    ConditionalInsert => 202
    Connect => 203
    ConnectByRoot => 204
    Connector => 205
    Constraint => 206
    Contains => 207
    Convert => 208
    ConvertTimezone => 209
    ConvertToCharset => 210
    Copy => 211
    CopyGrantsProperty => 212
    CopyParameter => 213
    Corr => 214
    Cos => 215
    Cosh => 216
    CosineDistance => 217
    Cot => 218
    Coth => 219
    Count => 220
    CountIf => 221
    CovarPop => 222
    CovarSamp => 223
    Create => 224
    Credentials => 225
    CredentialsProperty => 226
    Csc => 227
    Csch => 228
    Cube => 229
    CumeDist => 230
    CurrentAccount => 231
    CurrentAccountName => 232
    CurrentAvailableRoles => 233
    CurrentCatalog => 234
    CurrentClient => 235
    CurrentDatabase => 236
    CurrentDate => 237
    CurrentDatetime => 238
    CurrentIpAddress => 239
    CurrentOrganizationName => 240
    CurrentOrganizationUser => 241
    CurrentRegion => 242
    CurrentRole => 243
    CurrentRoleType => 244
    CurrentSchema => 245
    CurrentSchemas => 246
    CurrentSecondaryRoles => 247
    CurrentSession => 248
    CurrentStatement => 249
    CurrentTime => 250
    CurrentTimestamp => 251
    CurrentTimestampLTZ => 252
    CurrentTimezone => 253
    CurrentTransaction => 254
    CurrentUser => 255
    CurrentUserId => 256
    CurrentVersion => 257
    CurrentWarehouse => 258
    DDL => 259
    DML => 260
    DPipe => 261
    DataBlocksizeProperty => 262
    DataDeletionProperty => 263
    DataType => 264
    DataTypeParam => 265
    DatabaseProperty => 266
    Date => 267
    DateAdd => 268
    DateBin => 269
    DateDiff => 270
    DateFormatColumnConstraint => 271
    DateFromParts => 272
    DateFromUnixDate => 273
    DateStrToDate => 274
    DateSub => 275
    DateToDateStr => 276
    DateToDi => 277
    DateTrunc => 278
    Datetime => 279
    DatetimeAdd => 280
    DatetimeDiff => 281
    DatetimeSub => 282
    DatetimeTrunc => 283
    Day => 284
    DayOfMonth => 285
    DayOfWeek => 286
    DayOfWeekIso => 287
    DayOfYear => 288
    Dayname => 289
    Declare => 290
    DeclareItem => 291
    Decode => 292
    DecodeCase => 293
    DecompressBinary => 294
    DecompressString => 295
    Decrypt => 296
    DecryptRaw => 297
    DefaultColumnConstraint => 298
    DefinerProperty => 299
    Degrees => 300
    Delete => 301
    DenseRank => 302
    DerivedTable => 303
    Describe => 304
    Detach => 305
    DiToDate => 306
    DictProperty => 307
    DictRange => 308
    DictSubProperty => 309
    Directory => 310
    DirectoryStage => 311
    DistKeyProperty => 312
    DistStyleProperty => 313
    Distance => 314
    DistanceNd => 315
    Distinct => 316
    Distribute => 317
    DistributedByProperty => 318
    Div => 319
    Dot => 320
    DotProduct => 321
    Drop => 322
    DropPartition => 323
    DropPrimaryKey => 324
    DuplicateKeyProperty => 325
    DynamicIdentifier => 326
    DynamicProperty => 327
    EQ => 328
    Elt => 329
    EmptyProperty => 330
    Encode => 331
    EncodeColumnConstraint => 332
    EncodeProperty => 333
    Encrypt => 334
    EncryptRaw => 335
    EndStatement => 336
    EndsWith => 337
    EngineProperty => 338
    EnviromentProperty => 339
    EphemeralColumnConstraint => 340
    EqualNull => 341
    Escape => 342
    EuclideanDistance => 343
    Except => 344
    ExcludeColumnConstraint => 345
    Execute => 346
    ExecuteAsProperty => 347
    ExecuteSql => 348
    Exists => 349
    Exp => 350
    Explode => 351
    ExplodeOuter => 352
    ExplodingGenerateSeries => 353
    Export => 354
    Expression => 355
    ExtendsLeft => 356
    ExtendsRight => 357
    ExternalProperty => 358
    Extract => 359
    Factorial => 360
    FallbackProperty => 361
    FarmFingerprint => 362
    FeaturesAtTime => 363
    Fetch => 364
    FileFormatProperty => 365
    Filter => 366
    Final => 367
    First => 368
    FirstValue => 369
    Flatten => 370
    Float64 => 371
    Floor => 372
    ForClause => 373
    ForIn => 374
    ForceProperty => 375
    ForeignKey => 376
    Format => 377
    FormatJson => 378
    FormatPhrase => 379
    FreespaceProperty => 380
    From => 381
    FromBase => 382
    FromBase32 => 383
    FromBase64 => 384
    FromISO8601Date => 385
    FromISO8601Timestamp => 386
    FromISO8601TimestampNanos => 387
    FromJson => 388
    FromTimeZone => 389
    Func => 390
    FunctionSpecification => 391
    GT => 392
    GTE => 393
    GapFill => 394
    GenerateBool => 395
    GenerateDateArray => 396
    GenerateDouble => 397
    GenerateEmbedding => 398
    GenerateInt => 399
    GenerateSeries => 400
    GenerateTable => 401
    GenerateText => 402
    GenerateTimestampArray => 403
    GeneratedAsIdentityColumnConstraint => 404
    GeneratedAsRowColumnConstraint => 405
    Generator => 406
    Get => 407
    GetExtract => 408
    GetIgnoreCase => 409
    Getbit => 410
    Glob => 411
    GlobalProperty => 412
    Grant => 413
    GrantPrincipal => 414
    GrantPrivilege => 415
    Greatest => 416
    Group => 417
    GroupConcat => 418
    Grouping => 419
    GroupingId => 420
    GroupingSets => 421
    HandlerProperty => 422
    HashAgg => 423
    Having => 424
    HavingMax => 425
    HeapProperty => 426
    Heredoc => 427
    Hex => 428
    HexDecodeString => 429
    HexString => 430
    Hint => 431
    HistoricalData => 432
    Hll => 433
    Host => 434
    Hour => 435
    HybridProperty => 436
    ILike => 437
    IcebergProperty => 438
    Identifier => 439
    If => 440
    IfBlock => 441
    IgnoreNulls => 442
    In => 443
    InOutColumnConstraint => 444
    IncludeProperty => 445
    Index => 446
    IndexColumnConstraint => 447
    IndexConstraintOption => 448
    IndexParameters => 449
    IndexTableHint => 450
    InheritsProperty => 451
    Initcap => 452
    Inline => 453
    InlineLengthColumnConstraint => 454
    InputModelProperty => 455
    InputOutputFormat => 456
    Insert => 457
    Install => 458
    Int64 => 459
    IntDiv => 460
    Intersect => 461
    Interval => 462
    IntervalOp => 463
    IntervalSpan => 464
    Into => 465
    Introducer => 466
    InvisibleColumnConstraint => 467
    Is => 468
    IsArray => 469
    IsAscii => 470
    IsInf => 471
    IsNan => 472
    IsNullValue => 473
    IsolatedLoadingProperty => 474
    Iterate => 475
    JSON => 476
    JSONArray => 477
    JSONArrayAgg => 478
    JSONArrayAppend => 479
    JSONArrayContains => 480
    JSONArrayInsert => 481
    JSONBContains => 482
    JSONBContainsAllTopKeys => 483
    JSONBContainsAnyTopKeys => 484
    JSONBContainsTopKey => 485
    JSONBDeleteAtPath => 486
    JSONBExists => 487
    JSONBExtract => 488
    JSONBExtractScalar => 489
    JSONBObjectAgg => 490
    JSONBPathExists => 491
    JSONBool => 492
    JSONCast => 493
    JSONColumnDef => 494
    JSONExists => 495
    JSONExtract => 496
    JSONExtractArray => 497
    JSONExtractQuote => 498
    JSONExtractScalar => 499
    JSONFormat => 500
    JSONKeyValue => 501
    JSONKeys => 502
    JSONKeysAtDepth => 503
    JSONObject => 504
    JSONObjectAgg => 505
    JSONPath => 506
    JSONPathFilter => 507
    JSONPathKey => 508
    JSONPathPart => 509
    JSONPathRecursive => 510
    JSONPathRoot => 511
    JSONPathScript => 512
    JSONPathSelector => 513
    JSONPathSlice => 514
    JSONPathSubscript => 515
    JSONPathUnion => 516
    JSONPathWildcard => 517
    JSONRemove => 518
    JSONSchema => 519
    JSONSet => 520
    JSONStripNulls => 521
    JSONTable => 522
    JSONType => 523
    JSONValue => 524
    JSONValueArray => 525
    JarowinklerSimilarity => 526
    Join => 527
    JoinHint => 528
    JournalProperty => 529
    JustifyDays => 530
    JustifyHours => 531
    JustifyInterval => 532
    Kill => 533
    Kurtosis => 534
    Kwarg => 535
    LT => 536
    LTE => 537
    Lag => 538
    Lambda => 539
    LanguageProperty => 540
    Last => 541
    LastDay => 542
    LastValue => 543
    Lateral => 544
    LaxBool => 545
    LaxFloat64 => 546
    LaxInt64 => 547
    LaxString => 548
    Lead => 549
    Least => 550
    Leave => 551
    Left => 552
    Length => 553
    Levenshtein => 554
    Like => 555
    LikeProperty => 556
    Limit => 557
    LimitOptions => 558
    List => 559
    Literal => 560
    Ln => 561
    LoadData => 562
    Localtime => 563
    Localtimestamp => 564
    LocationProperty => 565
    Lock => 566
    LockProperty => 567
    LockingProperty => 568
    LockingStatement => 569
    Log => 570
    LogProperty => 571
    LogicalAnd => 572
    LogicalOr => 573
    LoopBlock => 574
    Lower => 575
    LowerHex => 576
    MD5 => 577
    MD5Digest => 578
    MD5NumberLower64 => 579
    MD5NumberUpper64 => 580
    MLForecast => 581
    MLTranslate => 582
    MacroOverload => 583
    MacroOverloads => 584
    MakeInterval => 585
    ManhattanDistance => 586
    Map => 587
    MapCat => 588
    MapContainsKey => 589
    MapDelete => 590
    MapFromEntries => 591
    MapInsert => 592
    MapKeys => 593
    MapPick => 594
    MapSize => 595
    MaskingPolicyColumnConstraint => 596
    MaskingProperty => 597
    Match => 598
    MatchAgainst => 599
    MatchRecognize => 600
    MatchRecognizeMeasure => 601
    MaterializedProperty => 602
    Max => 603
    Median => 604
    Merge => 605
    MergeBlockRatioProperty => 606
    MergeTreeTTL => 607
    MergeTreeTTLAction => 608
    Min => 609
    Minhash => 610
    MinhashCombine => 611
    Minute => 612
    Mod => 613
    Mode => 614
    ModelAttribute => 615
    ModifyColumn => 616
    ModuleProperty => 617
    Month => 618
    Monthname => 619
    MonthsBetween => 620
    Mul => 621
    MultitableInserts => 622
    NEQ => 623
    Nanvl => 624
    National => 625
    Neg => 626
    Negative => 627
    NestedJSONSelect => 628
    NetFunc => 629
    NetworkProperty => 630
    NextDay => 631
    NextValueFor => 632
    NoPrimaryIndexProperty => 633
    NonClusteredColumnConstraint => 634
    Normal => 635
    Normalize => 636
    Not => 637
    NotForReplicationColumnConstraint => 638
    NotNullColumnConstraint => 639
    NthValue => 640
    Ntile => 641
    Null => 642
    NullSafeEQ => 643
    NullSafeNEQ => 644
    Nullif => 645
    NumberToStr => 646
    Nvl2 => 647
    ObjectAgg => 648
    ObjectId => 649
    ObjectIdentifier => 650
    ObjectInsert => 651
    ObjectTransform => 652
    Offset => 653
    OnCluster => 654
    OnCommitProperty => 655
    OnCondition => 656
    OnConflict => 657
    OnProperty => 658
    OnUpdateColumnConstraint => 659
    Opclass => 660
    OpenJSON => 661
    OpenJSONColumnDef => 662
    Operator => 663
    Or => 664
    Order => 665
    Ordered => 666
    OutputModelProperty => 667
    OverflowTruncateBehavior => 668
    Overlaps => 669
    Overlay => 670
    Pad => 671
    Parameter => 672
    ParameterStyleProperty => 673
    ParameterizedAgg => 674
    Paren => 675
    ParseBignumeric => 676
    ParseDatetime => 677
    ParseIp => 678
    ParseJSON => 679
    ParseNumeric => 680
    ParseTime => 681
    ParseUrl => 682
    Partition => 683
    PartitionBoundSpec => 684
    PartitionByListProperty => 685
    PartitionByRangeProperty => 686
    PartitionByRangePropertyDynamic => 687
    PartitionByTruncate => 688
    PartitionId => 689
    PartitionList => 690
    PartitionRange => 691
    PartitionedByBucket => 692
    PartitionedByProperty => 693
    PartitionedOfProperty => 694
    PathColumnConstraint => 695
    PercentRank => 696
    PercentileCont => 697
    PercentileDisc => 698
    PeriodForSystemTimeConstraint => 699
    Pi => 700
    Pivot => 701
    PivotAlias => 702
    PivotAny => 703
    Placeholder => 704
    Posexplode => 705
    PosexplodeOuter => 706
    PositionalColumn => 707
    Pow => 708
    Pragma => 709
    PreWhere => 710
    Predicate => 711
    Predict => 712
    PreviousDay => 713
    PrimaryKey => 714
    PrimaryKeyColumnConstraint => 715
    Prior => 716
    ProjectionDef => 717
    ProjectionPolicyColumnConstraint => 718
    Properties => 719
    Property => 720
    PropertyEQ => 721
    PseudoType => 722
    Pseudocolumn => 723
    Put => 724
    Qualify => 725
    Quantile => 726
    Quarter => 727
    Query => 728
    QueryBand => 729
    QueryOption => 730
    QueryTransform => 731
    Radians => 732
    Rand => 733
    Randn => 734
    Randstr => 735
    RangeBucket => 736
    RangeN => 737
    Rank => 738
    RawString => 739
    ReadCSV => 740
    ReadParquet => 741
    RecursiveWithSearch => 742
    Reduce => 743
    Reference => 744
    Refresh => 745
    RefreshTriggerProperty => 746
    RegDomain => 747
    RegexpCount => 748
    RegexpExtract => 749
    RegexpExtractAll => 750
    RegexpFullMatch => 751
    RegexpILike => 752
    RegexpInstr => 753
    RegexpLike => 754
    RegexpReplace => 755
    RegexpSplit => 756
    RegexpSubstr => 757
    RegrAvgx => 758
    RegrAvgy => 759
    RegrCount => 760
    RegrIntercept => 761
    RegrR2 => 762
    RegrSlope => 763
    RegrSxx => 764
    RegrSxy => 765
    RegrSyy => 766
    RegrValx => 767
    RegrValy => 768
    RemoteWithConnectionModelProperty => 769
    RenameColumn => 770
    RenameIndex => 771
    Repeat => 772
    RepeatBlock => 773
    Replace => 774
    ReplacePartition => 775
    RespectNulls => 776
    Return => 777
    Returning => 778
    ReturnsProperty => 779
    Reverse => 780
    Revoke => 781
    Right => 782
    Rint => 783
    Rollback => 784
    Rollup => 785
    RollupIndex => 786
    RollupProperty => 787
    Round => 788
    RowAccessProperty => 789
    RowFormatDelimitedProperty => 790
    RowFormatProperty => 791
    RowFormatSerdeProperty => 792
    RowNumber => 793
    RtrimmedLength => 794
    SHA => 795
    SHA1Digest => 796
    SHA2 => 797
    SHA2Digest => 798
    SafeAdd => 799
    SafeConvertBytesToString => 800
    SafeDivide => 801
    SafeFunc => 802
    SafeMultiply => 803
    SafeNegate => 804
    SafeSubtract => 805
    SampleProperty => 806
    Schema => 807
    SchemaCommentProperty => 808
    ScopeResolution => 809
    Search => 810
    SearchIp => 811
    Sec => 812
    Sech => 813
    Second => 814
    Secret => 815
    SecureProperty => 816
    SecurityIntegrationProperty => 817
    Select => 818
    Selectable => 819
    SemanticView => 820
    Semicolon => 821
    Seq1 => 822
    Seq2 => 823
    Seq4 => 824
    Seq8 => 825
    SequenceProperties => 826
    SerdeProperties => 827
    SessionParameter => 828
    SessionUser => 829
    Set => 830
    SetConfigProperty => 831
    SetItem => 832
    SetOperation => 833
    SetProperty => 834
    SettingsProperty => 835
    SharingProperty => 836
    Show => 837
    Shuffle => 838
    Sign => 839
    SimilarTo => 840
    Sin => 841
    Sinh => 842
    Skewness => 843
    SkipJSONColumn => 844
    Slice => 845
    Sort => 846
    SortArray => 847
    SortKeyProperty => 848
    Soundex => 849
    SoundexP123 => 850
    Space => 851
    Split => 852
    SplitPart => 853
    SqlReadWriteProperty => 854
    SqlSecurityProperty => 855
    Sqrt => 856
    StDistance => 857
    StPoint => 858
    StabilityProperty => 859
    Stack => 860
    StandardHash => 861
    Star => 862
    StarMap => 863
    StartsWith => 864
    Stddev => 865
    StddevPop => 866
    StddevSamp => 867
    StorageHandlerProperty => 868
    StoredProcedure => 869
    StrPosition => 870
    StrToDate => 871
    StrToMap => 872
    StrToTime => 873
    StrToUnix => 874
    Stream => 875
    StreamingTableProperty => 876
    StrictProperty => 877
    String => 878
    StringToArray => 879
    StripNullValue => 880
    Strtok => 881
    StrtokToArray => 882
    Struct => 883
    StructExtract => 884
    Stuff => 885
    Sub => 886
    Subquery => 887
    SubqueryPredicate => 888
    Substring => 889
    SubstringIndex => 890
    Sum => 891
    Summarize => 892
    SwapTable => 893
    Systimestamp => 894
    Table => 895
    TableAlias => 896
    TableColumn => 897
    TableFromRows => 898
    TableSample => 899
    Tag => 900
    Tags => 901
    Tan => 902
    Tanh => 903
    TemporaryProperty => 904
    Time => 905
    TimeAdd => 906
    TimeDiff => 907
    TimeFromParts => 908
    TimeSlice => 909
    TimeStrToDate => 910
    TimeStrToTime => 911
    TimeStrToUnix => 912
    TimeSub => 913
    TimeToStr => 914
    TimeToTimeStr => 915
    TimeToUnix => 916
    TimeTrunc => 917
    TimeUnit => 918
    TimeseriesKey => 919
    Timestamp => 920
    TimestampAdd => 921
    TimestampDiff => 922
    TimestampFromParts => 923
    TimestampLtzFromParts => 924
    TimestampSub => 925
    TimestampTrunc => 926
    TimestampTzFromParts => 927
    TitleColumnConstraint => 928
    ToArray => 929
    ToBase32 => 930
    ToBase64 => 931
    ToBinary => 932
    ToBoolean => 933
    ToChar => 934
    ToCodePoints => 935
    ToDays => 936
    ToDecfloat => 937
    ToDouble => 938
    ToFile => 939
    ToMap => 940
    ToNumber => 941
    ToTableProperty => 942
    ToVariant => 943
    Transaction => 944
    Transform => 945
    TransformModelProperty => 946
    TransientProperty => 947
    Translate => 948
    TranslateCharacters => 949
    TriggerEvent => 950
    TriggerExecute => 951
    TriggerProperties => 952
    TriggerReferencing => 953
    Trim => 954
    Trunc => 955
    TruncateTable => 956
    Try => 957
    TryBase64DecodeBinary => 958
    TryBase64DecodeString => 959
    TryCast => 960
    TryHexDecodeBinary => 961
    TryHexDecodeString => 962
    TryToDecfloat => 963
    TsOrDiToDi => 964
    TsOrDsAdd => 965
    TsOrDsDiff => 966
    TsOrDsToDate => 967
    TsOrDsToDateStr => 968
    TsOrDsToDatetime => 969
    TsOrDsToTime => 970
    TsOrDsToTimestamp => 971
    Tuple => 972
    Typeof => 973
    UDTF => 974
    Unary => 975
    Uncache => 976
    Undrop => 977
    Unhex => 978
    Unicode => 979
    UnicodeString => 980
    Uniform => 981
    Union => 982
    UniqueColumnConstraint => 983
    UniqueKeyProperty => 984
    UnixDate => 985
    UnixMicros => 986
    UnixMillis => 987
    UnixSeconds => 988
    UnixToStr => 989
    UnixToTime => 990
    UnixToTimeStr => 991
    UnloggedProperty => 992
    Unnest => 993
    UnpivotColumns => 994
    Update => 995
    Upper => 996
    UppercaseColumnConstraint => 997
    Use => 998
    UserDefinedFunction => 999
    UsingData => 1000
    UsingProperty => 1001
    UsingTemplateProperty => 1002
    UtcDate => 1003
    UtcTime => 1004
    UtcTimestamp => 1005
    Uuid => 1006
    UuidProperty => 1007
    Values => 1008
    Var => 1009
    VarMap => 1010
    Variadic => 1011
    Variance => 1012
    VariancePop => 1013
    VectorSearch => 1014
    Version => 1015
    ViewAttributeProperty => 1016
    VirtualProperty => 1017
    VolatileProperty => 1018
    WatermarkColumnConstraint => 1019
    Week => 1020
    WeekOfYear => 1021
    WeekStart => 1022
    When => 1023
    Whens => 1024
    Where => 1025
    WhileBlock => 1026
    WidthBucket => 1027
    Window => 1028
    WindowSpec => 1029
    With => 1030
    WithDataProperty => 1031
    WithFill => 1032
    WithJournalTableProperty => 1033
    WithOperator => 1034
    WithProcedureOptions => 1035
    WithSchemaBindingProperty => 1036
    WithSystemVersioningProperty => 1037
    WithTableHint => 1038
    WithinGroup => 1039
    XMLElement => 1040
    XMLGet => 1041
    XMLKeyValueOption => 1042
    XMLNamespace => 1043
    XMLTable => 1044
    Xor => 1045
    Year => 1046
    YearOfWeek => 1047
    YearOfWeekIso => 1048
    ZeroFillColumnConstraint => 1049
    Zipf => 1050
    PrivExplodeOuter => 1051
    PrivTimeUnit => 1052
  }
}

///|
pub let all_kinds : FixedArray[Kind] = [
  AIAgg,
  AIClassify,
  AIEmbed,
  AIForecast,
  AIGenerate,
  AISimilarity,
  AISummarizeAgg,
  Abs,
  Acos,
  Acosh,
  Add,
  AddConstraint,
  AddMonths,
  AddPartition,
  Adjacent,
  Agg,
  AggFunc,
  AlgorithmProperty,
  Alias,
  Aliases,
  All,
  AllowedValuesProperty,
  Alter,
  AlterColumn,
  AlterDistStyle,
  AlterIndex,
  AlterModifySqlSecurity,
  AlterRename,
  AlterSession,
  AlterSet,
  AlterSortKey,
  Analyze,
  AnalyzeColumns,
  AnalyzeDelete,
  AnalyzeHistogram,
  AnalyzeListChainedRows,
  AnalyzeSample,
  AnalyzeStatistics,
  AnalyzeValidate,
  AnalyzeWith,
  And,
  Anonymous,
  AnonymousAggFunc,
  Any,
  AnyValue,
  ApiProperty,
  ApplicationProperty,
  Apply,
  ApproxDistinct,
  ApproxPercentileAccumulate,
  ApproxPercentileCombine,
  ApproxPercentileEstimate,
  ApproxQuantile,
  ApproxQuantiles,
  ApproxTopK,
  ApproxTopKAccumulate,
  ApproxTopKCombine,
  ApproxTopKEstimate,
  ApproxTopSum,
  ApproximateSimilarity,
  ArgMax,
  ArgMin,
  Array,
  ArrayAgg,
  ArrayAll,
  ArrayAny,
  ArrayAppend,
  ArrayCompact,
  ArrayConcat,
  ArrayConcatAgg,
  ArrayConstructCompact,
  ArrayContainedBy,
  ArrayContains,
  ArrayContainsAll,
  ArrayDistinct,
  ArrayExcept,
  ArrayFilter,
  ArrayFirst,
  ArrayInsert,
  ArrayIntersect,
  ArrayLast,
  ArrayMax,
  ArrayMin,
  ArrayOverlaps,
  ArrayPosition,
  ArrayPrepend,
  ArrayRemove,
  ArrayRemoveAt,
  ArrayReverse,
  ArraySize,
  ArraySlice,
  ArraySort,
  ArraySum,
  ArrayToString,
  ArrayUnionAgg,
  ArrayUniqueAgg,
  ArraysZip,
  Ascii,
  Asin,
  Asinh,
  AssumeColumnConstraint,
  AtIndex,
  AtTimeZone,
  Atan,
  Atan2,
  Atanh,
  Attach,
  AttachOption,
  AutoIncrementColumnConstraint,
  AutoIncrementProperty,
  AutoRefreshProperty,
  Avg,
  BackupProperty,
  Base64DecodeBinary,
  Base64DecodeString,
  Base64Encode,
  Between,
  Binary,
  BinaryColumnConstraint,
  BitLength,
  BitString,
  BitmapBitPosition,
  BitmapBucketNumber,
  BitmapConstructAgg,
  BitmapCount,
  BitmapOrAgg,
  BitwiseAnd,
  BitwiseAndAgg,
  BitwiseCount,
  BitwiseLeftShift,
  BitwiseNot,
  BitwiseOr,
  BitwiseOrAgg,
  BitwiseRightShift,
  BitwiseXor,
  BitwiseXorAgg,
  Block,
  BlockCompressionProperty,
  Booland,
  Boolean,
  Boolnot,
  Boolor,
  BoolxorAgg,
  Bracket,
  BuildProperty,
  ByteLength,
  ByteString,
  CTE,
  Cache,
  CalledOnNullInputProperty,
  Case,
  CaseSpecificColumnConstraint,
  CaseStatement,
  Cast,
  CastToStrType,
  CatalogProperty,
  Cbrt,
  Ceil,
  Changes,
  CharacterSet,
  CharacterSetColumnConstraint,
  CharacterSetProperty,
  Check,
  CheckColumnConstraint,
  CheckJson,
  CheckXml,
  ChecksumProperty,
  Chr,
  CityHash64,
  Clone,
  Cluster,
  ClusterProperty,
  ClusteredByProperty,
  ClusteredColumnConstraint,
  Coalesce,
  CodePointsToBytes,
  CodePointsToString,
  Collate,
  CollateColumnConstraint,
  CollateProperty,
  Collation,
  Column,
  ColumnConstraint,
  ColumnConstraintKind,
  ColumnDef,
  ColumnPosition,
  ColumnPrefix,
  Columns,
  CombinedAggFunc,
  CombinedParameterizedAgg,
  Command,
  Comment,
  CommentColumnConstraint,
  Commit,
  Comprehension,
  Compress,
  CompressColumnConstraint,
  ComputeProperty,
  ComputedColumnConstraint,
  Concat,
  ConcatWs,
  Condition,
  ConditionalInsert,
  Connect,
  ConnectByRoot,
  Connector,
  Constraint,
  Contains,
  Convert,
  ConvertTimezone,
  ConvertToCharset,
  Copy,
  CopyGrantsProperty,
  CopyParameter,
  Corr,
  Cos,
  Cosh,
  CosineDistance,
  Cot,
  Coth,
  Count,
  CountIf,
  CovarPop,
  CovarSamp,
  Create,
  Credentials,
  CredentialsProperty,
  Csc,
  Csch,
  Cube,
  CumeDist,
  CurrentAccount,
  CurrentAccountName,
  CurrentAvailableRoles,
  CurrentCatalog,
  CurrentClient,
  CurrentDatabase,
  CurrentDate,
  CurrentDatetime,
  CurrentIpAddress,
  CurrentOrganizationName,
  CurrentOrganizationUser,
  CurrentRegion,
  CurrentRole,
  CurrentRoleType,
  CurrentSchema,
  CurrentSchemas,
  CurrentSecondaryRoles,
  CurrentSession,
  CurrentStatement,
  CurrentTime,
  CurrentTimestamp,
  CurrentTimestampLTZ,
  CurrentTimezone,
  CurrentTransaction,
  CurrentUser,
  CurrentUserId,
  CurrentVersion,
  CurrentWarehouse,
  DDL,
  DML,
  DPipe,
  DataBlocksizeProperty,
  DataDeletionProperty,
  DataType,
  DataTypeParam,
  DatabaseProperty,
  Date,
  DateAdd,
  DateBin,
  DateDiff,
  DateFormatColumnConstraint,
  DateFromParts,
  DateFromUnixDate,
  DateStrToDate,
  DateSub,
  DateToDateStr,
  DateToDi,
  DateTrunc,
  Datetime,
  DatetimeAdd,
  DatetimeDiff,
  DatetimeSub,
  DatetimeTrunc,
  Day,
  DayOfMonth,
  DayOfWeek,
  DayOfWeekIso,
  DayOfYear,
  Dayname,
  Declare,
  DeclareItem,
  Decode,
  DecodeCase,
  DecompressBinary,
  DecompressString,
  Decrypt,
  DecryptRaw,
  DefaultColumnConstraint,
  DefinerProperty,
  Degrees,
  Delete,
  DenseRank,
  DerivedTable,
  Describe,
  Detach,
  DiToDate,
  DictProperty,
  DictRange,
  DictSubProperty,
  Directory,
  DirectoryStage,
  DistKeyProperty,
  DistStyleProperty,
  Distance,
  DistanceNd,
  Distinct,
  Distribute,
  DistributedByProperty,
  Div,
  Dot,
  DotProduct,
  Drop,
  DropPartition,
  DropPrimaryKey,
  DuplicateKeyProperty,
  DynamicIdentifier,
  DynamicProperty,
  EQ,
  Elt,
  EmptyProperty,
  Encode,
  EncodeColumnConstraint,
  EncodeProperty,
  Encrypt,
  EncryptRaw,
  EndStatement,
  EndsWith,
  EngineProperty,
  EnviromentProperty,
  EphemeralColumnConstraint,
  EqualNull,
  Escape,
  EuclideanDistance,
  Except,
  ExcludeColumnConstraint,
  Execute,
  ExecuteAsProperty,
  ExecuteSql,
  Exists,
  Exp,
  Explode,
  ExplodeOuter,
  ExplodingGenerateSeries,
  Export,
  Expression,
  ExtendsLeft,
  ExtendsRight,
  ExternalProperty,
  Extract,
  Factorial,
  FallbackProperty,
  FarmFingerprint,
  FeaturesAtTime,
  Fetch,
  FileFormatProperty,
  Filter,
  Final,
  First,
  FirstValue,
  Flatten,
  Float64,
  Floor,
  ForClause,
  ForIn,
  ForceProperty,
  ForeignKey,
  Format,
  FormatJson,
  FormatPhrase,
  FreespaceProperty,
  From,
  FromBase,
  FromBase32,
  FromBase64,
  FromISO8601Date,
  FromISO8601Timestamp,
  FromISO8601TimestampNanos,
  FromJson,
  FromTimeZone,
  Func,
  FunctionSpecification,
  GT,
  GTE,
  GapFill,
  GenerateBool,
  GenerateDateArray,
  GenerateDouble,
  GenerateEmbedding,
  GenerateInt,
  GenerateSeries,
  GenerateTable,
  GenerateText,
  GenerateTimestampArray,
  GeneratedAsIdentityColumnConstraint,
  GeneratedAsRowColumnConstraint,
  Generator,
  Get,
  GetExtract,
  GetIgnoreCase,
  Getbit,
  Glob,
  GlobalProperty,
  Grant,
  GrantPrincipal,
  GrantPrivilege,
  Greatest,
  Group,
  GroupConcat,
  Grouping,
  GroupingId,
  GroupingSets,
  HandlerProperty,
  HashAgg,
  Having,
  HavingMax,
  HeapProperty,
  Heredoc,
  Hex,
  HexDecodeString,
  HexString,
  Hint,
  HistoricalData,
  Hll,
  Host,
  Hour,
  HybridProperty,
  ILike,
  IcebergProperty,
  Identifier,
  If,
  IfBlock,
  IgnoreNulls,
  In,
  InOutColumnConstraint,
  IncludeProperty,
  Index,
  IndexColumnConstraint,
  IndexConstraintOption,
  IndexParameters,
  IndexTableHint,
  InheritsProperty,
  Initcap,
  Inline,
  InlineLengthColumnConstraint,
  InputModelProperty,
  InputOutputFormat,
  Insert,
  Install,
  Int64,
  IntDiv,
  Intersect,
  Interval,
  IntervalOp,
  IntervalSpan,
  Into,
  Introducer,
  InvisibleColumnConstraint,
  Is,
  IsArray,
  IsAscii,
  IsInf,
  IsNan,
  IsNullValue,
  IsolatedLoadingProperty,
  Iterate,
  JSON,
  JSONArray,
  JSONArrayAgg,
  JSONArrayAppend,
  JSONArrayContains,
  JSONArrayInsert,
  JSONBContains,
  JSONBContainsAllTopKeys,
  JSONBContainsAnyTopKeys,
  JSONBContainsTopKey,
  JSONBDeleteAtPath,
  JSONBExists,
  JSONBExtract,
  JSONBExtractScalar,
  JSONBObjectAgg,
  JSONBPathExists,
  JSONBool,
  JSONCast,
  JSONColumnDef,
  JSONExists,
  JSONExtract,
  JSONExtractArray,
  JSONExtractQuote,
  JSONExtractScalar,
  JSONFormat,
  JSONKeyValue,
  JSONKeys,
  JSONKeysAtDepth,
  JSONObject,
  JSONObjectAgg,
  JSONPath,
  JSONPathFilter,
  JSONPathKey,
  JSONPathPart,
  JSONPathRecursive,
  JSONPathRoot,
  JSONPathScript,
  JSONPathSelector,
  JSONPathSlice,
  JSONPathSubscript,
  JSONPathUnion,
  JSONPathWildcard,
  JSONRemove,
  JSONSchema,
  JSONSet,
  JSONStripNulls,
  JSONTable,
  JSONType,
  JSONValue,
  JSONValueArray,
  JarowinklerSimilarity,
  Join,
  JoinHint,
  JournalProperty,
  JustifyDays,
  JustifyHours,
  JustifyInterval,
  Kill,
  Kurtosis,
  Kwarg,
  LT,
  LTE,
  Lag,
  Lambda,
  LanguageProperty,
  Last,
  LastDay,
  LastValue,
  Lateral,
  LaxBool,
  LaxFloat64,
  LaxInt64,
  LaxString,
  Lead,
  Least,
  Leave,
  Left,
  Length,
  Levenshtein,
  Like,
  LikeProperty,
  Limit,
  LimitOptions,
  List,
  Literal,
  Ln,
  LoadData,
  Localtime,
  Localtimestamp,
  LocationProperty,
  Lock,
  LockProperty,
  LockingProperty,
  LockingStatement,
  Log,
  LogProperty,
  LogicalAnd,
  LogicalOr,
  LoopBlock,
  Lower,
  LowerHex,
  MD5,
  MD5Digest,
  MD5NumberLower64,
  MD5NumberUpper64,
  MLForecast,
  MLTranslate,
  MacroOverload,
  MacroOverloads,
  MakeInterval,
  ManhattanDistance,
  Map,
  MapCat,
  MapContainsKey,
  MapDelete,
  MapFromEntries,
  MapInsert,
  MapKeys,
  MapPick,
  MapSize,
  MaskingPolicyColumnConstraint,
  MaskingProperty,
  Match,
  MatchAgainst,
  MatchRecognize,
  MatchRecognizeMeasure,
  MaterializedProperty,
  Max,
  Median,
  Merge,
  MergeBlockRatioProperty,
  MergeTreeTTL,
  MergeTreeTTLAction,
  Min,
  Minhash,
  MinhashCombine,
  Minute,
  Mod,
  Mode,
  ModelAttribute,
  ModifyColumn,
  ModuleProperty,
  Month,
  Monthname,
  MonthsBetween,
  Mul,
  MultitableInserts,
  NEQ,
  Nanvl,
  National,
  Neg,
  Negative,
  NestedJSONSelect,
  NetFunc,
  NetworkProperty,
  NextDay,
  NextValueFor,
  NoPrimaryIndexProperty,
  NonClusteredColumnConstraint,
  Normal,
  Normalize,
  Not,
  NotForReplicationColumnConstraint,
  NotNullColumnConstraint,
  NthValue,
  Ntile,
  Null,
  NullSafeEQ,
  NullSafeNEQ,
  Nullif,
  NumberToStr,
  Nvl2,
  ObjectAgg,
  ObjectId,
  ObjectIdentifier,
  ObjectInsert,
  ObjectTransform,
  Offset,
  OnCluster,
  OnCommitProperty,
  OnCondition,
  OnConflict,
  OnProperty,
  OnUpdateColumnConstraint,
  Opclass,
  OpenJSON,
  OpenJSONColumnDef,
  Operator,
  Or,
  Order,
  Ordered,
  OutputModelProperty,
  OverflowTruncateBehavior,
  Overlaps,
  Overlay,
  Pad,
  Parameter,
  ParameterStyleProperty,
  ParameterizedAgg,
  Paren,
  ParseBignumeric,
  ParseDatetime,
  ParseIp,
  ParseJSON,
  ParseNumeric,
  ParseTime,
  ParseUrl,
  Partition,
  PartitionBoundSpec,
  PartitionByListProperty,
  PartitionByRangeProperty,
  PartitionByRangePropertyDynamic,
  PartitionByTruncate,
  PartitionId,
  PartitionList,
  PartitionRange,
  PartitionedByBucket,
  PartitionedByProperty,
  PartitionedOfProperty,
  PathColumnConstraint,
  PercentRank,
  PercentileCont,
  PercentileDisc,
  PeriodForSystemTimeConstraint,
  Pi,
  Pivot,
  PivotAlias,
  PivotAny,
  Placeholder,
  Posexplode,
  PosexplodeOuter,
  PositionalColumn,
  Pow,
  Pragma,
  PreWhere,
  Predicate,
  Predict,
  PreviousDay,
  PrimaryKey,
  PrimaryKeyColumnConstraint,
  Prior,
  ProjectionDef,
  ProjectionPolicyColumnConstraint,
  Properties,
  Property,
  PropertyEQ,
  PseudoType,
  Pseudocolumn,
  Put,
  Qualify,
  Quantile,
  Quarter,
  Query,
  QueryBand,
  QueryOption,
  QueryTransform,
  Radians,
  Rand,
  Randn,
  Randstr,
  RangeBucket,
  RangeN,
  Rank,
  RawString,
  ReadCSV,
  ReadParquet,
  RecursiveWithSearch,
  Reduce,
  Reference,
  Refresh,
  RefreshTriggerProperty,
  RegDomain,
  RegexpCount,
  RegexpExtract,
  RegexpExtractAll,
  RegexpFullMatch,
  RegexpILike,
  RegexpInstr,
  RegexpLike,
  RegexpReplace,
  RegexpSplit,
  RegexpSubstr,
  RegrAvgx,
  RegrAvgy,
  RegrCount,
  RegrIntercept,
  RegrR2,
  RegrSlope,
  RegrSxx,
  RegrSxy,
  RegrSyy,
  RegrValx,
  RegrValy,
  RemoteWithConnectionModelProperty,
  RenameColumn,
  RenameIndex,
  Repeat,
  RepeatBlock,
  Replace,
  ReplacePartition,
  RespectNulls,
  Return,
  Returning,
  ReturnsProperty,
  Reverse,
  Revoke,
  Right,
  Rint,
  Rollback,
  Rollup,
  RollupIndex,
  RollupProperty,
  Round,
  RowAccessProperty,
  RowFormatDelimitedProperty,
  RowFormatProperty,
  RowFormatSerdeProperty,
  RowNumber,
  RtrimmedLength,
  SHA,
  SHA1Digest,
  SHA2,
  SHA2Digest,
  SafeAdd,
  SafeConvertBytesToString,
  SafeDivide,
  SafeFunc,
  SafeMultiply,
  SafeNegate,
  SafeSubtract,
  SampleProperty,
  Schema,
  SchemaCommentProperty,
  ScopeResolution,
  Search,
  SearchIp,
  Sec,
  Sech,
  Second,
  Secret,
  SecureProperty,
  SecurityIntegrationProperty,
  Select,
  Selectable,
  SemanticView,
  Semicolon,
  Seq1,
  Seq2,
  Seq4,
  Seq8,
  SequenceProperties,
  SerdeProperties,
  SessionParameter,
  SessionUser,
  Set,
  SetConfigProperty,
  SetItem,
  SetOperation,
  SetProperty,
  SettingsProperty,
  SharingProperty,
  Show,
  Shuffle,
  Sign,
  SimilarTo,
  Sin,
  Sinh,
  Skewness,
  SkipJSONColumn,
  Slice,
  Sort,
  SortArray,
  SortKeyProperty,
  Soundex,
  SoundexP123,
  Space,
  Split,
  SplitPart,
  SqlReadWriteProperty,
  SqlSecurityProperty,
  Sqrt,
  StDistance,
  StPoint,
  StabilityProperty,
  Stack,
  StandardHash,
  Star,
  StarMap,
  StartsWith,
  Stddev,
  StddevPop,
  StddevSamp,
  StorageHandlerProperty,
  StoredProcedure,
  StrPosition,
  StrToDate,
  StrToMap,
  StrToTime,
  StrToUnix,
  Stream,
  StreamingTableProperty,
  StrictProperty,
  String,
  StringToArray,
  StripNullValue,
  Strtok,
  StrtokToArray,
  Struct,
  StructExtract,
  Stuff,
  Sub,
  Subquery,
  SubqueryPredicate,
  Substring,
  SubstringIndex,
  Sum,
  Summarize,
  SwapTable,
  Systimestamp,
  Table,
  TableAlias,
  TableColumn,
  TableFromRows,
  TableSample,
  Tag,
  Tags,
  Tan,
  Tanh,
  TemporaryProperty,
  Time,
  TimeAdd,
  TimeDiff,
  TimeFromParts,
  TimeSlice,
  TimeStrToDate,
  TimeStrToTime,
  TimeStrToUnix,
  TimeSub,
  TimeToStr,
  TimeToTimeStr,
  TimeToUnix,
  TimeTrunc,
  TimeUnit,
  TimeseriesKey,
  Timestamp,
  TimestampAdd,
  TimestampDiff,
  TimestampFromParts,
  TimestampLtzFromParts,
  TimestampSub,
  TimestampTrunc,
  TimestampTzFromParts,
  TitleColumnConstraint,
  ToArray,
  ToBase32,
  ToBase64,
  ToBinary,
  ToBoolean,
  ToChar,
  ToCodePoints,
  ToDays,
  ToDecfloat,
  ToDouble,
  ToFile,
  ToMap,
  ToNumber,
  ToTableProperty,
  ToVariant,
  Transaction,
  Transform,
  TransformModelProperty,
  TransientProperty,
  Translate,
  TranslateCharacters,
  TriggerEvent,
  TriggerExecute,
  TriggerProperties,
  TriggerReferencing,
  Trim,
  Trunc,
  TruncateTable,
  Try,
  TryBase64DecodeBinary,
  TryBase64DecodeString,
  TryCast,
  TryHexDecodeBinary,
  TryHexDecodeString,
  TryToDecfloat,
  TsOrDiToDi,
  TsOrDsAdd,
  TsOrDsDiff,
  TsOrDsToDate,
  TsOrDsToDateStr,
  TsOrDsToDatetime,
  TsOrDsToTime,
  TsOrDsToTimestamp,
  Tuple,
  Typeof,
  UDTF,
  Unary,
  Uncache,
  Undrop,
  Unhex,
  Unicode,
  UnicodeString,
  Uniform,
  Union,
  UniqueColumnConstraint,
  UniqueKeyProperty,
  UnixDate,
  UnixMicros,
  UnixMillis,
  UnixSeconds,
  UnixToStr,
  UnixToTime,
  UnixToTimeStr,
  UnloggedProperty,
  Unnest,
  UnpivotColumns,
  Update,
  Upper,
  UppercaseColumnConstraint,
  Use,
  UserDefinedFunction,
  UsingData,
  UsingProperty,
  UsingTemplateProperty,
  UtcDate,
  UtcTime,
  UtcTimestamp,
  Uuid,
  UuidProperty,
  Values,
  Var,
  VarMap,
  Variadic,
  Variance,
  VariancePop,
  VectorSearch,
  Version,
  ViewAttributeProperty,
  VirtualProperty,
  VolatileProperty,
  WatermarkColumnConstraint,
  Week,
  WeekOfYear,
  WeekStart,
  When,
  Whens,
  Where,
  WhileBlock,
  WidthBucket,
  Window,
  WindowSpec,
  With,
  WithDataProperty,
  WithFill,
  WithJournalTableProperty,
  WithOperator,
  WithProcedureOptions,
  WithSchemaBindingProperty,
  WithSystemVersioningProperty,
  WithTableHint,
  WithinGroup,
  XMLElement,
  XMLGet,
  XMLKeyValueOption,
  XMLNamespace,
  XMLTable,
  Xor,
  Year,
  YearOfWeek,
  YearOfWeekIso,
  ZeroFillColumnConstraint,
  Zipf,
  PrivExplodeOuter,
  PrivTimeUnit,
]

///|
let kind_names : FixedArray[String] = [
  "AIAgg", "AIClassify", "AIEmbed", "AIForecast", "AIGenerate", "AISimilarity", "AISummarizeAgg",
  "Abs", "Acos", "Acosh", "Add", "AddConstraint", "AddMonths", "AddPartition", "Adjacent",
  "Agg", "AggFunc", "AlgorithmProperty", "Alias", "Aliases", "All", "AllowedValuesProperty",
  "Alter", "AlterColumn", "AlterDistStyle", "AlterIndex", "AlterModifySqlSecurity",
  "AlterRename", "AlterSession", "AlterSet", "AlterSortKey", "Analyze", "AnalyzeColumns",
  "AnalyzeDelete", "AnalyzeHistogram", "AnalyzeListChainedRows", "AnalyzeSample",
  "AnalyzeStatistics", "AnalyzeValidate", "AnalyzeWith", "And", "Anonymous", "AnonymousAggFunc",
  "Any", "AnyValue", "ApiProperty", "ApplicationProperty", "Apply", "ApproxDistinct",
  "ApproxPercentileAccumulate", "ApproxPercentileCombine", "ApproxPercentileEstimate",
  "ApproxQuantile", "ApproxQuantiles", "ApproxTopK", "ApproxTopKAccumulate", "ApproxTopKCombine",
  "ApproxTopKEstimate", "ApproxTopSum", "ApproximateSimilarity", "ArgMax", "ArgMin",
  "Array", "ArrayAgg", "ArrayAll", "ArrayAny", "ArrayAppend", "ArrayCompact", "ArrayConcat",
  "ArrayConcatAgg", "ArrayConstructCompact", "ArrayContainedBy", "ArrayContains",
  "ArrayContainsAll", "ArrayDistinct", "ArrayExcept", "ArrayFilter", "ArrayFirst",
  "ArrayInsert", "ArrayIntersect", "ArrayLast", "ArrayMax", "ArrayMin", "ArrayOverlaps",
  "ArrayPosition", "ArrayPrepend", "ArrayRemove", "ArrayRemoveAt", "ArrayReverse",
  "ArraySize", "ArraySlice", "ArraySort", "ArraySum", "ArrayToString", "ArrayUnionAgg",
  "ArrayUniqueAgg", "ArraysZip", "Ascii", "Asin", "Asinh", "AssumeColumnConstraint",
  "AtIndex", "AtTimeZone", "Atan", "Atan2", "Atanh", "Attach", "AttachOption", "AutoIncrementColumnConstraint",
  "AutoIncrementProperty", "AutoRefreshProperty", "Avg", "BackupProperty", "Base64DecodeBinary",
  "Base64DecodeString", "Base64Encode", "Between", "Binary", "BinaryColumnConstraint",
  "BitLength", "BitString", "BitmapBitPosition", "BitmapBucketNumber", "BitmapConstructAgg",
  "BitmapCount", "BitmapOrAgg", "BitwiseAnd", "BitwiseAndAgg", "BitwiseCount", "BitwiseLeftShift",
  "BitwiseNot", "BitwiseOr", "BitwiseOrAgg", "BitwiseRightShift", "BitwiseXor", "BitwiseXorAgg",
  "Block", "BlockCompressionProperty", "Booland", "Boolean", "Boolnot", "Boolor",
  "BoolxorAgg", "Bracket", "BuildProperty", "ByteLength", "ByteString", "CTE", "Cache",
  "CalledOnNullInputProperty", "Case", "CaseSpecificColumnConstraint", "CaseStatement",
  "Cast", "CastToStrType", "CatalogProperty", "Cbrt", "Ceil", "Changes", "CharacterSet",
  "CharacterSetColumnConstraint", "CharacterSetProperty", "Check", "CheckColumnConstraint",
  "CheckJson", "CheckXml", "ChecksumProperty", "Chr", "CityHash64", "Clone", "Cluster",
  "ClusterProperty", "ClusteredByProperty", "ClusteredColumnConstraint", "Coalesce",
  "CodePointsToBytes", "CodePointsToString", "Collate", "CollateColumnConstraint",
  "CollateProperty", "Collation", "Column", "ColumnConstraint", "ColumnConstraintKind",
  "ColumnDef", "ColumnPosition", "ColumnPrefix", "Columns", "CombinedAggFunc", "CombinedParameterizedAgg",
  "Command", "Comment", "CommentColumnConstraint", "Commit", "Comprehension", "Compress",
  "CompressColumnConstraint", "ComputeProperty", "ComputedColumnConstraint", "Concat",
  "ConcatWs", "Condition", "ConditionalInsert", "Connect", "ConnectByRoot", "Connector",
  "Constraint", "Contains", "Convert", "ConvertTimezone", "ConvertToCharset", "Copy",
  "CopyGrantsProperty", "CopyParameter", "Corr", "Cos", "Cosh", "CosineDistance",
  "Cot", "Coth", "Count", "CountIf", "CovarPop", "CovarSamp", "Create", "Credentials",
  "CredentialsProperty", "Csc", "Csch", "Cube", "CumeDist", "CurrentAccount", "CurrentAccountName",
  "CurrentAvailableRoles", "CurrentCatalog", "CurrentClient", "CurrentDatabase",
  "CurrentDate", "CurrentDatetime", "CurrentIpAddress", "CurrentOrganizationName",
  "CurrentOrganizationUser", "CurrentRegion", "CurrentRole", "CurrentRoleType", "CurrentSchema",
  "CurrentSchemas", "CurrentSecondaryRoles", "CurrentSession", "CurrentStatement",
  "CurrentTime", "CurrentTimestamp", "CurrentTimestampLTZ", "CurrentTimezone", "CurrentTransaction",
  "CurrentUser", "CurrentUserId", "CurrentVersion", "CurrentWarehouse", "DDL", "DML",
  "DPipe", "DataBlocksizeProperty", "DataDeletionProperty", "DataType", "DataTypeParam",
  "DatabaseProperty", "Date", "DateAdd", "DateBin", "DateDiff", "DateFormatColumnConstraint",
  "DateFromParts", "DateFromUnixDate", "DateStrToDate", "DateSub", "DateToDateStr",
  "DateToDi", "DateTrunc", "Datetime", "DatetimeAdd", "DatetimeDiff", "DatetimeSub",
  "DatetimeTrunc", "Day", "DayOfMonth", "DayOfWeek", "DayOfWeekIso", "DayOfYear",
  "Dayname", "Declare", "DeclareItem", "Decode", "DecodeCase", "DecompressBinary",
  "DecompressString", "Decrypt", "DecryptRaw", "DefaultColumnConstraint", "DefinerProperty",
  "Degrees", "Delete", "DenseRank", "DerivedTable", "Describe", "Detach", "DiToDate",
  "DictProperty", "DictRange", "DictSubProperty", "Directory", "DirectoryStage",
  "DistKeyProperty", "DistStyleProperty", "Distance", "DistanceNd", "Distinct", "Distribute",
  "DistributedByProperty", "Div", "Dot", "DotProduct", "Drop", "DropPartition", "DropPrimaryKey",
  "DuplicateKeyProperty", "DynamicIdentifier", "DynamicProperty", "EQ", "Elt", "EmptyProperty",
  "Encode", "EncodeColumnConstraint", "EncodeProperty", "Encrypt", "EncryptRaw",
  "EndStatement", "EndsWith", "EngineProperty", "EnviromentProperty", "EphemeralColumnConstraint",
  "EqualNull", "Escape", "EuclideanDistance", "Except", "ExcludeColumnConstraint",
  "Execute", "ExecuteAsProperty", "ExecuteSql", "Exists", "Exp", "Explode", "ExplodeOuter",
  "ExplodingGenerateSeries", "Export", "Expression", "ExtendsLeft", "ExtendsRight",
  "ExternalProperty", "Extract", "Factorial", "FallbackProperty", "FarmFingerprint",
  "FeaturesAtTime", "Fetch", "FileFormatProperty", "Filter", "Final", "First", "FirstValue",
  "Flatten", "Float64", "Floor", "ForClause", "ForIn", "ForceProperty", "ForeignKey",
  "Format", "FormatJson", "FormatPhrase", "FreespaceProperty", "From", "FromBase",
  "FromBase32", "FromBase64", "FromISO8601Date", "FromISO8601Timestamp", "FromISO8601TimestampNanos",
  "FromJson", "FromTimeZone", "Func", "FunctionSpecification", "GT", "GTE", "GapFill",
  "GenerateBool", "GenerateDateArray", "GenerateDouble", "GenerateEmbedding", "GenerateInt",
  "GenerateSeries", "GenerateTable", "GenerateText", "GenerateTimestampArray", "GeneratedAsIdentityColumnConstraint",
  "GeneratedAsRowColumnConstraint", "Generator", "Get", "GetExtract", "GetIgnoreCase",
  "Getbit", "Glob", "GlobalProperty", "Grant", "GrantPrincipal", "GrantPrivilege",
  "Greatest", "Group", "GroupConcat", "Grouping", "GroupingId", "GroupingSets", "HandlerProperty",
  "HashAgg", "Having", "HavingMax", "HeapProperty", "Heredoc", "Hex", "HexDecodeString",
  "HexString", "Hint", "HistoricalData", "Hll", "Host", "Hour", "HybridProperty",
  "ILike", "IcebergProperty", "Identifier", "If", "IfBlock", "IgnoreNulls", "In",
  "InOutColumnConstraint", "IncludeProperty", "Index", "IndexColumnConstraint", "IndexConstraintOption",
  "IndexParameters", "IndexTableHint", "InheritsProperty", "Initcap", "Inline", "InlineLengthColumnConstraint",
  "InputModelProperty", "InputOutputFormat", "Insert", "Install", "Int64", "IntDiv",
  "Intersect", "Interval", "IntervalOp", "IntervalSpan", "Into", "Introducer", "InvisibleColumnConstraint",
  "Is", "IsArray", "IsAscii", "IsInf", "IsNan", "IsNullValue", "IsolatedLoadingProperty",
  "Iterate", "JSON", "JSONArray", "JSONArrayAgg", "JSONArrayAppend", "JSONArrayContains",
  "JSONArrayInsert", "JSONBContains", "JSONBContainsAllTopKeys", "JSONBContainsAnyTopKeys",
  "JSONBContainsTopKey", "JSONBDeleteAtPath", "JSONBExists", "JSONBExtract", "JSONBExtractScalar",
  "JSONBObjectAgg", "JSONBPathExists", "JSONBool", "JSONCast", "JSONColumnDef", "JSONExists",
  "JSONExtract", "JSONExtractArray", "JSONExtractQuote", "JSONExtractScalar", "JSONFormat",
  "JSONKeyValue", "JSONKeys", "JSONKeysAtDepth", "JSONObject", "JSONObjectAgg", "JSONPath",
  "JSONPathFilter", "JSONPathKey", "JSONPathPart", "JSONPathRecursive", "JSONPathRoot",
  "JSONPathScript", "JSONPathSelector", "JSONPathSlice", "JSONPathSubscript", "JSONPathUnion",
  "JSONPathWildcard", "JSONRemove", "JSONSchema", "JSONSet", "JSONStripNulls", "JSONTable",
  "JSONType", "JSONValue", "JSONValueArray", "JarowinklerSimilarity", "Join", "JoinHint",
  "JournalProperty", "JustifyDays", "JustifyHours", "JustifyInterval", "Kill", "Kurtosis",
  "Kwarg", "LT", "LTE", "Lag", "Lambda", "LanguageProperty", "Last", "LastDay", "LastValue",
  "Lateral", "LaxBool", "LaxFloat64", "LaxInt64", "LaxString", "Lead", "Least", "Leave",
  "Left", "Length", "Levenshtein", "Like", "LikeProperty", "Limit", "LimitOptions",
  "List", "Literal", "Ln", "LoadData", "Localtime", "Localtimestamp", "LocationProperty",
  "Lock", "LockProperty", "LockingProperty", "LockingStatement", "Log", "LogProperty",
  "LogicalAnd", "LogicalOr", "LoopBlock", "Lower", "LowerHex", "MD5", "MD5Digest",
  "MD5NumberLower64", "MD5NumberUpper64", "MLForecast", "MLTranslate", "MacroOverload",
  "MacroOverloads", "MakeInterval", "ManhattanDistance", "Map", "MapCat", "MapContainsKey",
  "MapDelete", "MapFromEntries", "MapInsert", "MapKeys", "MapPick", "MapSize", "MaskingPolicyColumnConstraint",
  "MaskingProperty", "Match", "MatchAgainst", "MatchRecognize", "MatchRecognizeMeasure",
  "MaterializedProperty", "Max", "Median", "Merge", "MergeBlockRatioProperty", "MergeTreeTTL",
  "MergeTreeTTLAction", "Min", "Minhash", "MinhashCombine", "Minute", "Mod", "Mode",
  "ModelAttribute", "ModifyColumn", "ModuleProperty", "Month", "Monthname", "MonthsBetween",
  "Mul", "MultitableInserts", "NEQ", "Nanvl", "National", "Neg", "Negative", "NestedJSONSelect",
  "NetFunc", "NetworkProperty", "NextDay", "NextValueFor", "NoPrimaryIndexProperty",
  "NonClusteredColumnConstraint", "Normal", "Normalize", "Not", "NotForReplicationColumnConstraint",
  "NotNullColumnConstraint", "NthValue", "Ntile", "Null", "NullSafeEQ", "NullSafeNEQ",
  "Nullif", "NumberToStr", "Nvl2", "ObjectAgg", "ObjectId", "ObjectIdentifier", "ObjectInsert",
  "ObjectTransform", "Offset", "OnCluster", "OnCommitProperty", "OnCondition", "OnConflict",
  "OnProperty", "OnUpdateColumnConstraint", "Opclass", "OpenJSON", "OpenJSONColumnDef",
  "Operator", "Or", "Order", "Ordered", "OutputModelProperty", "OverflowTruncateBehavior",
  "Overlaps", "Overlay", "Pad", "Parameter", "ParameterStyleProperty", "ParameterizedAgg",
  "Paren", "ParseBignumeric", "ParseDatetime", "ParseIp", "ParseJSON", "ParseNumeric",
  "ParseTime", "ParseUrl", "Partition", "PartitionBoundSpec", "PartitionByListProperty",
  "PartitionByRangeProperty", "PartitionByRangePropertyDynamic", "PartitionByTruncate",
  "PartitionId", "PartitionList", "PartitionRange", "PartitionedByBucket", "PartitionedByProperty",
  "PartitionedOfProperty", "PathColumnConstraint", "PercentRank", "PercentileCont",
  "PercentileDisc", "PeriodForSystemTimeConstraint", "Pi", "Pivot", "PivotAlias",
  "PivotAny", "Placeholder", "Posexplode", "PosexplodeOuter", "PositionalColumn",
  "Pow", "Pragma", "PreWhere", "Predicate", "Predict", "PreviousDay", "PrimaryKey",
  "PrimaryKeyColumnConstraint", "Prior", "ProjectionDef", "ProjectionPolicyColumnConstraint",
  "Properties", "Property", "PropertyEQ", "PseudoType", "Pseudocolumn", "Put", "Qualify",
  "Quantile", "Quarter", "Query", "QueryBand", "QueryOption", "QueryTransform", "Radians",
  "Rand", "Randn", "Randstr", "RangeBucket", "RangeN", "Rank", "RawString", "ReadCSV",
  "ReadParquet", "RecursiveWithSearch", "Reduce", "Reference", "Refresh", "RefreshTriggerProperty",
  "RegDomain", "RegexpCount", "RegexpExtract", "RegexpExtractAll", "RegexpFullMatch",
  "RegexpILike", "RegexpInstr", "RegexpLike", "RegexpReplace", "RegexpSplit", "RegexpSubstr",
  "RegrAvgx", "RegrAvgy", "RegrCount", "RegrIntercept", "RegrR2", "RegrSlope", "RegrSxx",
  "RegrSxy", "RegrSyy", "RegrValx", "RegrValy", "RemoteWithConnectionModelProperty",
  "RenameColumn", "RenameIndex", "Repeat", "RepeatBlock", "Replace", "ReplacePartition",
  "RespectNulls", "Return", "Returning", "ReturnsProperty", "Reverse", "Revoke",
  "Right", "Rint", "Rollback", "Rollup", "RollupIndex", "RollupProperty", "Round",
  "RowAccessProperty", "RowFormatDelimitedProperty", "RowFormatProperty", "RowFormatSerdeProperty",
  "RowNumber", "RtrimmedLength", "SHA", "SHA1Digest", "SHA2", "SHA2Digest", "SafeAdd",
  "SafeConvertBytesToString", "SafeDivide", "SafeFunc", "SafeMultiply", "SafeNegate",
  "SafeSubtract", "SampleProperty", "Schema", "SchemaCommentProperty", "ScopeResolution",
  "Search", "SearchIp", "Sec", "Sech", "Second", "Secret", "SecureProperty", "SecurityIntegrationProperty",
  "Select", "Selectable", "SemanticView", "Semicolon", "Seq1", "Seq2", "Seq4", "Seq8",
  "SequenceProperties", "SerdeProperties", "SessionParameter", "SessionUser", "Set",
  "SetConfigProperty", "SetItem", "SetOperation", "SetProperty", "SettingsProperty",
  "SharingProperty", "Show", "Shuffle", "Sign", "SimilarTo", "Sin", "Sinh", "Skewness",
  "SkipJSONColumn", "Slice", "Sort", "SortArray", "SortKeyProperty", "Soundex", "SoundexP123",
  "Space", "Split", "SplitPart", "SqlReadWriteProperty", "SqlSecurityProperty", "Sqrt",
  "StDistance", "StPoint", "StabilityProperty", "Stack", "StandardHash", "Star",
  "StarMap", "StartsWith", "Stddev", "StddevPop", "StddevSamp", "StorageHandlerProperty",
  "StoredProcedure", "StrPosition", "StrToDate", "StrToMap", "StrToTime", "StrToUnix",
  "Stream", "StreamingTableProperty", "StrictProperty", "String", "StringToArray",
  "StripNullValue", "Strtok", "StrtokToArray", "Struct", "StructExtract", "Stuff",
  "Sub", "Subquery", "SubqueryPredicate", "Substring", "SubstringIndex", "Sum", "Summarize",
  "SwapTable", "Systimestamp", "Table", "TableAlias", "TableColumn", "TableFromRows",
  "TableSample", "Tag", "Tags", "Tan", "Tanh", "TemporaryProperty", "Time", "TimeAdd",
  "TimeDiff", "TimeFromParts", "TimeSlice", "TimeStrToDate", "TimeStrToTime", "TimeStrToUnix",
  "TimeSub", "TimeToStr", "TimeToTimeStr", "TimeToUnix", "TimeTrunc", "TimeUnit",
  "TimeseriesKey", "Timestamp", "TimestampAdd", "TimestampDiff", "TimestampFromParts",
  "TimestampLtzFromParts", "TimestampSub", "TimestampTrunc", "TimestampTzFromParts",
  "TitleColumnConstraint", "ToArray", "ToBase32", "ToBase64", "ToBinary", "ToBoolean",
  "ToChar", "ToCodePoints", "ToDays", "ToDecfloat", "ToDouble", "ToFile", "ToMap",
  "ToNumber", "ToTableProperty", "ToVariant", "Transaction", "Transform", "TransformModelProperty",
  "TransientProperty", "Translate", "TranslateCharacters", "TriggerEvent", "TriggerExecute",
  "TriggerProperties", "TriggerReferencing", "Trim", "Trunc", "TruncateTable", "Try",
  "TryBase64DecodeBinary", "TryBase64DecodeString", "TryCast", "TryHexDecodeBinary",
  "TryHexDecodeString", "TryToDecfloat", "TsOrDiToDi", "TsOrDsAdd", "TsOrDsDiff",
  "TsOrDsToDate", "TsOrDsToDateStr", "TsOrDsToDatetime", "TsOrDsToTime", "TsOrDsToTimestamp",
  "Tuple", "Typeof", "UDTF", "Unary", "Uncache", "Undrop", "Unhex", "Unicode", "UnicodeString",
  "Uniform", "Union", "UniqueColumnConstraint", "UniqueKeyProperty", "UnixDate",
  "UnixMicros", "UnixMillis", "UnixSeconds", "UnixToStr", "UnixToTime", "UnixToTimeStr",
  "UnloggedProperty", "Unnest", "UnpivotColumns", "Update", "Upper", "UppercaseColumnConstraint",
  "Use", "UserDefinedFunction", "UsingData", "UsingProperty", "UsingTemplateProperty",
  "UtcDate", "UtcTime", "UtcTimestamp", "Uuid", "UuidProperty", "Values", "Var",
  "VarMap", "Variadic", "Variance", "VariancePop", "VectorSearch", "Version", "ViewAttributeProperty",
  "VirtualProperty", "VolatileProperty", "WatermarkColumnConstraint", "Week", "WeekOfYear",
  "WeekStart", "When", "Whens", "Where", "WhileBlock", "WidthBucket", "Window", "WindowSpec",
  "With", "WithDataProperty", "WithFill", "WithJournalTableProperty", "WithOperator",
  "WithProcedureOptions", "WithSchemaBindingProperty", "WithSystemVersioningProperty",
  "WithTableHint", "WithinGroup", "XMLElement", "XMLGet", "XMLKeyValueOption", "XMLNamespace",
  "XMLTable", "Xor", "Year", "YearOfWeek", "YearOfWeekIso", "ZeroFillColumnConstraint",
  "Zipf", "_ExplodeOuter", "_TimeUnit",
]

///|
let kind_ancestors : FixedArray[FixedArray[Int]] = [
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 201],
  [355],
  [355, 390, 201],
  [355],
  [355, 117, 711, 201],
  [355, 16, 390, 201],
  [390, 201],
  [720, 355],
  [355],
  [355],
  [355, 888, 711, 201],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355, 205, 117, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 888, 711, 201],
  [355, 16, 390, 201],
  [720, 355],
  [720, 355],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [726, 355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 117, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 183],
  [355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [355, 183],
  [720, 355],
  [720, 355],
  [355, 16, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 711, 201],
  [201],
  [182, 355],
  [355, 390, 201],
  [355, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 117, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 117, 201],
  [975, 355, 201],
  [355, 117, 201],
  [355, 16, 390, 201],
  [355, 117, 201],
  [355, 117, 201],
  [355, 16, 390, 201],
  [355],
  [720, 355],
  [355, 390, 201],
  [355, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 201],
  [720, 355],
  [355, 390, 201],
  [355, 201],
  [355, 303, 819],
  [355],
  [720, 355],
  [355, 390, 201],
  [355, 183],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [355, 183],
  [720, 355],
  [355],
  [355, 183],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [720, 355],
  [720, 355],
  [355, 183],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 390, 201],
  [355, 183],
  [720, 355],
  [355, 390, 201],
  [355, 201],
  [355],
  [],
  [355],
  [355],
  [355],
  [355, 390, 201],
  [42, 355, 16, 390, 201],
  [674, 355, 16, 390, 201],
  [355],
  [355],
  [355, 183],
  [355],
  [355],
  [355, 390, 201],
  [355, 183],
  [720, 355],
  [355, 183],
  [355, 390, 201],
  [199, 355, 390, 201],
  [],
  [355],
  [355],
  [355, 390, 201],
  [117, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 260],
  [720, 355],
  [355],
  [355, 16, 390, 117, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 259, 819],
  [355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [819],
  [],
  [355, 117, 201],
  [720, 355],
  [720, 355],
  [355],
  [355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201, 463, 918],
  [355, 390, 201, 463, 918],
  [355, 390, 201, 918],
  [355, 183],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201, 463, 918],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201, 463, 918],
  [355, 390, 201, 918],
  [355, 390, 201, 463, 918],
  [355, 390, 201, 918],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 183],
  [720, 355],
  [355, 390, 201],
  [355, 260],
  [355, 16, 390, 201],
  [819],
  [355],
  [355],
  [355, 390, 201],
  [720, 355],
  [720, 355],
  [720, 355],
  [355],
  [355],
  [720, 355],
  [720, 355],
  [355, 117, 201],
  [355, 117, 201],
  [355],
  [665, 355],
  [720, 355],
  [355, 117, 201],
  [355, 117, 201],
  [355, 390, 201],
  [355],
  [355],
  [355],
  [720, 355],
  [355, 390, 201],
  [720, 355],
  [355, 117, 711, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355, 183],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [720, 355],
  [720, 355],
  [355, 183],
  [355, 390, 201],
  [355, 117, 201],
  [355, 390, 201],
  [833, 355, 728, 819],
  [355, 183],
  [355],
  [720, 355],
  [346, 355],
  [355, 390, 888, 711, 201],
  [355, 390, 201],
  [355, 390, 201, 974, 303, 819],
  [],
  [400, 355, 390, 201],
  [355],
  [],
  [355, 117, 711, 201],
  [355, 117, 711, 201],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [720, 355],
  [355],
  [355],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [720, 355],
  [355],
  [355, 390, 201],
  [355],
  [355],
  [720, 355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [201],
  [355],
  [355, 117, 711, 201],
  [355, 117, 711, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 183],
  [355, 183],
  [355, 390, 201, 974, 303, 819],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 201],
  [720, 355],
  [355],
  [355],
  [355],
  [355, 390, 201],
  [355],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355],
  [720, 355],
  [355, 16, 390, 201],
  [355],
  [355],
  [720, 355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 201],
  [355],
  [355],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 117, 711, 201],
  [720, 355],
  [355],
  [355, 390, 201],
  [355],
  [355],
  [355, 711, 201],
  [355, 183],
  [720, 355],
  [355],
  [355, 183],
  [355],
  [355],
  [355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201, 974, 303, 819],
  [355, 183],
  [720, 355],
  [355],
  [355, 259, 819, 260],
  [355],
  [355, 390, 201],
  [355, 117, 201],
  [833, 355, 728, 819],
  [1052, 355, 918],
  [918],
  [264, 355],
  [355],
  [355],
  [355, 183],
  [355, 117, 711, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355],
  [355],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 117, 390, 201],
  [355, 390, 201],
  [355, 117, 390, 201],
  [355, 117, 390, 201],
  [355, 16, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 390, 201],
  [153, 355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 117, 390, 201],
  [355, 390, 201],
  [355],
  [355, 117, 390, 201],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355],
  [509, 355],
  [509, 355],
  [355],
  [509, 355],
  [509, 355],
  [509, 355],
  [509, 355],
  [509, 355],
  [509, 355],
  [509, 355],
  [509, 355],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355, 16, 390, 201],
  [355, 117, 201],
  [355, 117, 711, 201],
  [355, 117, 711, 201],
  [355, 16, 390, 201],
  [355],
  [720, 355],
  [355, 16, 390, 201],
  [355, 390, 201, 918],
  [355, 16, 390, 201],
  [355, 974, 303, 819],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 201],
  [720, 355],
  [355],
  [355],
  [355, 390, 201],
  [355, 201],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355],
  [720, 355],
  [720, 355],
  [355],
  [355, 390, 201],
  [720, 355],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355],
  [355, 390, 201],
  [428, 355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 183],
  [720, 355],
  [355, 117, 711, 201],
  [355, 390, 201],
  [355],
  [355],
  [720, 355],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 260],
  [720, 355],
  [355],
  [355],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355, 117, 201],
  [355, 16, 390, 201],
  [355],
  [355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 201],
  [355],
  [355, 117, 711, 201],
  [355, 390, 201],
  [355],
  [975, 355, 201],
  [355, 390, 201],
  [355, 117, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 183],
  [355, 390, 201],
  [355, 390, 201],
  [975, 355, 201],
  [355, 183],
  [355, 183],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 201],
  [355, 117, 711, 201],
  [355, 117, 711, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [264, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [720, 355],
  [720, 355],
  [355],
  [355],
  [720, 355],
  [355, 183],
  [355],
  [355, 390, 201],
  [355],
  [355, 117, 201],
  [355, 205, 117, 390, 201],
  [355],
  [355],
  [720, 355],
  [355],
  [355, 117, 711, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 201],
  [720, 355],
  [355, 16, 390, 201],
  [975, 355, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [720, 355],
  [720, 355],
  [355],
  [720, 355],
  [355],
  [355],
  [355],
  [720, 355],
  [720, 355],
  [720, 355],
  [355, 183],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 183],
  [355, 390, 201],
  [355],
  [18, 355],
  [355],
  [355, 201],
  [351, 355, 390, 201, 974, 303, 819],
  [705, 351, 355, 390, 201, 974, 303, 819, 352],
  [355],
  [355, 117, 390, 201],
  [355],
  [355],
  [201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355, 183],
  [355],
  [355],
  [355, 183],
  [355],
  [355],
  [355, 117, 201],
  [264, 355],
  [181, 355, 201],
  [355],
  [355],
  [355, 16, 390, 201],
  [355, 390, 201],
  [819],
  [355],
  [355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355],
  [355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [720, 355],
  [355],
  [355],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355],
  [355],
  [355],
  [355],
  [720, 355],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [355],
  [720, 355],
  [355, 390, 201],
  [720, 355],
  [720, 355],
  [720, 355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355],
  [720, 355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [720, 355],
  [355, 728, 819],
  [],
  [355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [720, 355],
  [355, 201],
  [355, 390, 201],
  [355],
  [720, 355],
  [355],
  [355, 728, 819],
  [720, 355],
  [720, 355],
  [720, 355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 711, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355],
  [355],
  [665, 355],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201, 974, 303, 819],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [720, 355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [720, 355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 117, 201],
  [355, 303, 728, 819],
  [711, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 16, 390, 201],
  [355],
  [355],
  [355, 390, 201],
  [355, 819],
  [355],
  [355],
  [355, 974, 303, 819],
  [355],
  [355],
  [720, 355, 183],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201, 918],
  [355, 390, 201, 918],
  [355, 390, 201],
  [355, 390, 201, 918],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201, 918],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201, 918],
  [],
  [355],
  [355, 390, 201],
  [355, 390, 201, 918],
  [355, 390, 201, 918],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201, 918],
  [355, 390, 201, 918],
  [355, 390, 201],
  [355, 183],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [720, 355],
  [720, 355],
  [355, 390, 201],
  [355],
  [355],
  [355],
  [355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [153, 355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201, 918],
  [355, 390, 201, 918],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355, 390, 201],
  [303, 819],
  [355, 201],
  [355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 201],
  [355, 390, 201],
  [833, 355, 728, 819],
  [355, 183],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 390, 201, 974, 303, 819],
  [355],
  [355, 260],
  [355, 390, 201],
  [355, 183],
  [355],
  [355],
  [355],
  [720, 355],
  [720, 355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [720, 355],
  [355, 974, 303, 819],
  [355],
  [355, 390, 201],
  [355],
  [355, 16, 390, 201],
  [355, 16, 390, 201],
  [355, 390, 201],
  [355],
  [720, 355],
  [720, 355],
  [720, 355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [355],
  [355],
  [355, 390, 201],
  [355, 201],
  [355],
  [355],
  [720, 355],
  [355],
  [720, 355],
  [355],
  [720, 355],
  [720, 355],
  [720, 355],
  [355],
  [355],
  [355, 390, 201],
  [355, 390, 201],
  [355],
  [355],
  [355, 390, 201],
  [355, 205, 117, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [355, 390, 201],
  [182, 355],
  [355, 390, 201],
  [351, 355, 390, 201, 974, 303, 819, 352],
  [355, 918],
]

///|
let kind_arg_types : FixedArray[FixedArray[(String, Bool)]] = [
  [("this", true), ("expression", true)],
  [("this", true), ("categories", true), ("config", false)],
  [("expressions", true)],
  [
    ("this", true),
    ("data_col", false),
    ("timestamp_col", false),
    ("model", false),
    ("id_cols", false),
    ("horizon", false),
    ("forecast_end_timestamp", false),
    ("confidence_level", false),
    ("output_historical_time_series", false),
    ("context_window", false),
  ],
  [("expressions", true)],
  [("expressions", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("expressions", true)],
  [("this", true), ("expression", true), ("preserve_end_of_month", false)],
  [("this", true), ("exists", false), ("location", false)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("alias", false)],
  [("this", true), ("expressions", true)],
  [("this", true)],
  [("expressions", true)],
  [
    ("this", false),
    ("kind", true),
    ("actions", true),
    ("exists", false),
    ("only", false),
    ("options", false),
    ("cluster", false),
    ("not_valid", false),
    ("check", false),
    ("cascade", false),
    ("iceberg", false),
  ],
  [
    ("this", true),
    ("dtype", false),
    ("collate", false),
    ("using", false),
    ("default", false),
    ("drop", false),
    ("comment", false),
    ("allow_null", false),
    ("visible", false),
    ("rename_to", false),
    ("exists", false),
  ],
  [("this", true)],
  [("this", true), ("visible", true)],
  [("expressions", true)],
  [("this", true)],
  [("expressions", true), ("unset", false)],
  [
    ("expressions", false),
    ("option", false),
    ("tablespace", false),
    ("access_method", false),
    ("file_format", false),
    ("copy_options", false),
    ("tag", false),
    ("location", false),
    ("serde", false),
  ],
  [("this", false), ("expressions", false), ("compound", false)],
  [
    ("kind", false),
    ("tables", false),
    ("options", false),
    ("mode", false),
    ("partition", false),
    ("expression", false),
    ("properties", false),
  ],
  [("this", true)],
  [("kind", false)],
  [
    ("this", true),
    ("expressions", true),
    ("expression", false),
    ("update_options", false),
  ],
  [("expression", false)],
  [("kind", true), ("sample", true)],
  [("kind", true), ("option", false), ("this", false), ("expressions", false)],
  [("kind", true), ("this", false), ("expression", false)],
  [("expressions", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expressions", false)],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [("this", true)],
  [],
  [],
  [("this", true), ("expression", true)],
  [("this", true), ("accuracy", false)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("percentile", true)],
  [
    ("this", true),
    ("quantile", true),
    ("accuracy", false),
    ("weight", false),
    ("error_tolerance", false),
  ],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false), ("counters", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", true), ("count", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("count", false)],
  [("this", true), ("expression", true), ("count", false)],
  [
    ("expressions", false),
    ("bracket_notation", false),
    ("struct_name_inheritance", false),
  ],
  [("this", true), ("nulls_excluded", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true), ("null_propagation", false)],
  [("this", true)],
  [("this", true), ("expressions", false), ("null_propagation", false)],
  [("this", true)],
  [("expressions", false)],
  [("this", true), ("expression", true)],
  [
    ("this", true),
    ("expression", true),
    ("ensure_variant", false),
    ("check_null", false),
  ],
  [("this", true), ("expression", true)],
  [("this", true), ("check_null", false)],
  [("this", true), ("expression", true), ("is_multiset", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", false)],
  [("this", true), ("position", true), ("expression", true), ("offset", false)],
  [("expressions", true), ("is_multiset", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("null_safe", false)],
  [("this", true), ("expression", true), ("zero_based", false)],
  [("this", true), ("expression", true), ("null_propagation", false)],
  [("this", true), ("expression", true), ("null_propagation", false)],
  [("this", true), ("position", true)],
  [("this", true)],
  [("this", true), ("expression", false)],
  [
    ("this", true),
    ("start", true),
    ("end", false),
    ("step", false),
    ("zero_based", false),
  ],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false)],
  [
    ("this", true),
    ("expression", true),
    ("null", false),
    ("null_is_empty", false),
    ("null_delim_is_null", false),
  ],
  [("this", true)],
  [("this", true)],
  [("expressions", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("zone", true)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("exists", false), ("expressions", false)],
  [("this", true), ("expression", false)],
  [("this", true)],
  [("this", true)],
  [
    ("this", false),
    ("cadence", false),
    ("offset", false),
    ("randomize", false),
    ("expressions", false),
    ("settings", false),
    ("append", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true), ("alphabet", false)],
  [("this", true), ("alphabet", false)],
  [("this", true), ("max_line_length", false), ("alphabet", false)],
  [("this", true), ("low", true), ("high", true), ("symmetric", false)],
  [("this", true), ("expression", true)],
  [],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("padside", false)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("requires_int128", false)],
  [("this", true)],
  [("this", true), ("expression", true), ("padside", false)],
  [("this", true)],
  [("this", true), ("expression", true), ("requires_int128", false)],
  [("this", true), ("expression", true), ("padside", false)],
  [("this", true)],
  [("expressions", true), ("begin", false)],
  [
    ("autotemp", false),
    ("always", false),
    ("default", false),
    ("manual", false),
    ("never", false),
  ],
  [("this", true), ("expression", true), ("round_input", false)],
  [("this", true)],
  [("this", true), ("round_input", false)],
  [("this", true), ("expression", true), ("round_input", false)],
  [("this", true)],
  [
    ("this", true),
    ("expressions", true),
    ("offset", false),
    ("safe", false),
    ("returns_list_for_maps", false),
    ("json_access", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true), ("is_bytes", false)],
  [
    ("this", true),
    ("alias", true),
    ("scalar", false),
    ("materialized", false),
    ("key_expressions", false),
  ],
  [("this", true), ("lazy", false), ("options", false), ("expression", false)],
  [],
  [("this", false), ("ifs", true), ("default", false)],
  [("not_", true)],
  [("this", false), ("ifs", true), ("default", false)],
  [
    ("this", true),
    ("to", true),
    ("format", false),
    ("safe", false),
    ("action", false),
    ("default", false),
  ],
  [("this", true), ("to", true)],
  [],
  [("this", true)],
  [("this", true), ("decimals", false), ("to", false)],
  [("information", true), ("at_before", false), ("end", false)],
  [("this", true), ("default", false)],
  [("this", true)],
  [("this", true), ("default", true)],
  [("this", true)],
  [("this", true), ("enforced", false)],
  [("this", true)],
  [("this", true), ("disable_auto_convert", false)],
  [("on", false), ("default", false)],
  [("expressions", true), ("charset", false)],
  [("expressions", false)],
  [("this", true), ("shallow", false), ("copy", false)],
  [("expressions", true)],
  [("this", false), ("expressions", false)],
  [("expressions", true), ("sorted_by", false), ("buckets", true)],
  [("this", true)],
  [
    ("this", true),
    ("expressions", false),
    ("is_nvl", false),
    ("is_null", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("default", false)],
  [("this", true)],
  [
    ("this", true),
    ("table", false),
    ("db", false),
    ("catalog", false),
    ("join_mark", false),
    ("shadow", false),
  ],
  [("this", false), ("kind", true)],
  [("this", true)],
  [
    ("this", true),
    ("kind", false),
    ("constraints", false),
    ("exists", false),
    ("position", false),
    ("default", false),
    ("output", false),
  ],
  [("this", false), ("position", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("unpack", false)],
  [("this", true), ("expressions", false)],
  [("this", true), ("expressions", true), ("params", true)],
  [("this", true), ("expression", false)],
  [
    ("this", true),
    ("kind", true),
    ("expression", true),
    ("exists", false),
    ("materialized", false),
  ],
  [("this", true)],
  [("chain", false), ("this", false), ("durability", false)],
  [
    ("this", true),
    ("expression", true),
    ("position", false),
    ("iterator", true),
    ("condition", false),
  ],
  [("this", true), ("method", false)],
  [("this", false)],
  [],
  [
    ("this", true),
    ("persisted", false),
    ("not_null", false),
    ("data_type", false),
  ],
  [("expressions", true), ("safe", false), ("coalesce", false)],
  [
    ("expressions", true),
    ("safe", false),
    ("coalesce", false),
    ("flatten", false),
  ],
  [("this", true)],
  [("this", true), ("expression", false), ("else_", false)],
  [("start", false), ("connect", true), ("nocycle", false)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expressions", true)],
  [("this", true), ("expression", true), ("json_scope", false)],
  [("this", true), ("expression", true), ("style", false), ("safe", false)],
  [
    ("source_tz", false),
    ("target_tz", true),
    ("timestamp", true),
    ("options", false),
  ],
  [("this", true), ("dest", true), ("source", false)],
  [
    ("this", true),
    ("kind", true),
    ("files", false),
    ("credentials", false),
    ("format", false),
    ("params", false),
  ],
  [],
  [("this", true), ("expression", false), ("expressions", false)],
  [("this", true), ("expression", true), ("null_on_zero_variance", false)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true)],
  [("this", false), ("expressions", false), ("big_int", false)],
  [("this", true), ("zero_on_all_null", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [
    ("with_", false),
    ("this", true),
    ("kind", true),
    ("expression", false),
    ("exists", false),
    ("properties", false),
    ("replace", false),
    ("refresh", false),
    ("unique", false),
    ("indexes", false),
    ("no_schema_binding", false),
    ("begin", false),
    ("clone", false),
    ("concurrently", false),
    ("clustered", false),
  ],
  [
    ("credentials", false),
    ("encryption", false),
    ("storage", false),
    ("iam_role", false),
    ("region", false),
  ],
  [("expressions", true)],
  [("this", true)],
  [("this", true)],
  [("expressions", false)],
  [("expressions", false)],
  [],
  [],
  [],
  [],
  [],
  [],
  [("this", false)],
  [("this", false)],
  [],
  [],
  [],
  [],
  [],
  [],
  [("this", false)],
  [("this", false)],
  [],
  [],
  [],
  [("this", false)],
  [("this", false), ("sysdate", false)],
  [],
  [],
  [],
  [("this", false)],
  [],
  [],
  [],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("safe", false)],
  [
    ("size", false),
    ("units", false),
    ("minimum", false),
    ("maximum", false),
    ("default", false),
  ],
  [("on", true), ("filter_column", false), ("retention_period", false)],
  [
    ("this", true),
    ("expressions", false),
    ("nested", false),
    ("values", false),
    ("kind", false),
    ("nullable", false),
    ("collate", false),
  ],
  [("this", true), ("expression", false)],
  [],
  [("this", false), ("zone", false), ("expressions", false)],
  [("this", true), ("expression", true), ("unit", false)],
  [
    ("this", true),
    ("expression", true),
    ("unit", false),
    ("zone", false),
    ("origin", false),
  ],
  [
    ("this", true),
    ("expression", true),
    ("unit", false),
    ("zone", false),
    ("big_int", false),
    ("date_part_boundary", false),
  ],
  [("this", true)],
  [("year", true), ("month", false), ("day", false), ("allow_overflow", false)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("unit", false)],
  [("this", true)],
  [("this", true)],
  [
    ("unit", true),
    ("this", true),
    ("zone", false),
    ("input_type_preserved", false),
  ],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", true), ("unit", false)],
  [
    ("this", true),
    ("expression", true),
    ("unit", false),
    ("date_part_boundary", false),
  ],
  [("this", true), ("expression", true), ("unit", false)],
  [("this", true), ("unit", true), ("zone", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("abbreviated", false)],
  [("expressions", true), ("replace", false)],
  [("this", true), ("kind", false), ("default", false)],
  [("this", true), ("charset", true), ("replace", false)],
  [("expressions", true)],
  [("this", true), ("method", true)],
  [("this", true), ("method", true)],
  [
    ("this", true),
    ("passphrase", true),
    ("aad", false),
    ("encryption_method", false),
    ("safe", false),
  ],
  [
    ("this", true),
    ("key", true),
    ("iv", true),
    ("aad", false),
    ("encryption_method", false),
    ("aead", false),
    ("safe", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [
    ("with_", false),
    ("this", false),
    ("using", false),
    ("where", false),
    ("returning", false),
    ("order", false),
    ("limit", false),
    ("tables", false),
    ("cluster", false),
    ("hint", false),
  ],
  [("expressions", false)],
  [("this", true)],
  [
    ("this", true),
    ("style", false),
    ("kind", false),
    ("properties", false),
    ("expressions", false),
    ("partition", false),
    ("format", false),
    ("as_json", false),
  ],
  [
    ("this", true),
    ("kind", false),
    ("exists", false),
    ("cluster", false),
    ("permanent", false),
    ("sync", false),
  ],
  [("this", true)],
  [("this", true), ("kind", true), ("settings", false)],
  [("this", true), ("min", true), ("max", true)],
  [("this", true), ("value", true)],
  [("this", true), ("local", false), ("row_format", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("expressions", false), ("on", false)],
  [("this", false), ("expressions", true), ("siblings", false)],
  [("expressions", false), ("kind", true), ("buckets", false), ("order", false)],
  [("this", true), ("expression", true), ("typed", false), ("safe", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [
    ("kind", false),
    ("tables", false),
    ("expressions", false),
    ("exists", false),
    ("temporary", false),
    ("materialized", false),
    ("cascade", false),
    ("restrict", false),
    ("constraints", false),
    ("purge", false),
    ("cluster", false),
    ("concurrently", false),
    ("sync", false),
    ("iceberg", false),
    ("force", false),
  ],
  [("expressions", true), ("exists", false)],
  [],
  [("expressions", true)],
  [("this", true), ("expressions", false)],
  [],
  [("this", true), ("expression", true)],
  [("this", true), ("expressions", true)],
  [],
  [("this", true), ("charset", true)],
  [("this", true)],
  [("this", true), ("properties", false), ("key", false)],
  [
    ("this", true),
    ("passphrase", true),
    ("aad", false),
    ("encryption_method", false),
  ],
  [
    ("this", true),
    ("key", true),
    ("iv", true),
    ("aad", false),
    ("encryption_method", false),
  ],
  [],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("expressions", true)],
  [("this", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [
    ("with_", false),
    ("this", true),
    ("expression", true),
    ("distinct", false),
    ("by_name", false),
    ("side", false),
    ("kind", false),
    ("on", false),
    ("match", false),
    ("laterals", false),
    ("joins", false),
    ("connect", false),
    ("pivots", false),
    ("prewhere", false),
    ("where", false),
    ("group", false),
    ("having", false),
    ("qualify", false),
    ("windows", false),
    ("distribute", false),
    ("sort", false),
    ("cluster", false),
    ("order", false),
    ("limit", false),
    ("offset", false),
    ("locks", false),
    ("sample", false),
    ("settings", false),
    ("format", false),
    ("options", false),
    ("for_", false),
  ],
  [("this", true)],
  [("this", true), ("expressions", false), ("return_status", false)],
  [("this", true)],
  [("this", true), ("expressions", false), ("return_status", false)],
  [("this", true), ("expression", false)],
  [("this", true)],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [("start", true), ("end", true), ("step", false), ("is_end_exclusive", false)],
  [("this", true), ("connection", false), ("options", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", false)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("no", true), ("protection", false)],
  [("expressions", true)],
  [
    ("this", true),
    ("time", false),
    ("num_rows", false),
    ("ignore_feature_nulls", false),
  ],
  [("direction", false), ("count", false), ("limit_options", false)],
  [("this", false), ("expressions", false), ("hive_format", false)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("expression", false)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", false)],
  [("this", true), ("decimals", false), ("to", false)],
  [("kind", true), ("expressions", false)],
  [("this", true), ("expression", true)],
  [],
  [
    ("expressions", false),
    ("reference", false),
    ("delete", false),
    ("update", false),
    ("options", false),
  ],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [("this", true), ("format", true)],
  [("this", true), ("percent", false)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("options", false)],
  [("this", true), ("zone", true)],
  [("this", true)],
  [
    ("this", true),
    ("characteristics", false),
    ("properties", false),
    ("expression", true),
  ],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [
    ("this", true),
    ("ts_column", true),
    ("bucket_width", true),
    ("partitioning_columns", false),
    ("value_columns", false),
    ("origin", false),
    ("ignore_nulls", false),
  ],
  [("this", true), ("expression", false), ("params_struct", false)],
  [("start", true), ("end", true), ("step", false)],
  [("this", true), ("expression", false), ("params_struct", false)],
  [
    ("this", true),
    ("expression", true),
    ("params_struct", false),
    ("is_text", false),
  ],
  [("this", true), ("expression", false), ("params_struct", false)],
  [("start", true), ("end", true), ("step", false), ("is_end_exclusive", false)],
  [("this", true), ("expression", false), ("params_struct", false)],
  [("this", true), ("expression", false), ("params_struct", false)],
  [("start", true), ("end", true), ("step", true)],
  [
    ("this", false),
    ("expression", false),
    ("on_null", false),
    ("start", false),
    ("increment", false),
    ("minvalue", false),
    ("maxvalue", false),
    ("cycle", false),
    ("order", false),
  ],
  [("start", false), ("hidden", false)],
  [("rowcount", false), ("timelimit", false)],
  [("this", true), ("target", true), ("properties", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true), ("zero_is_msb", false)],
  [("this", true), ("expression", true)],
  [],
  [
    ("privileges", true),
    ("kind", false),
    ("securable", true),
    ("principals", true),
    ("grant_option", false),
  ],
  [("this", true), ("kind", false)],
  [("this", true), ("expressions", false)],
  [("this", true), ("expressions", false), ("ignore_nulls", true)],
  [
    ("expressions", false),
    ("grouping_sets", false),
    ("cube", false),
    ("rollup", false),
    ("totals", false),
    ("all", false),
  ],
  [("this", true), ("separator", false), ("on_overflow", false)],
  [("expressions", true)],
  [("expressions", false)],
  [("expressions", true)],
  [("this", true)],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [("this", true), ("expression", true), ("max", true)],
  [],
  [("this", true), ("tag", false)],
  [("this", true), ("case", false)],
  [("this", true)],
  [("this", true), ("is_integer", false)],
  [("expressions", true)],
  [("this", true), ("kind", true), ("expression", true)],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [("this", true)],
  [],
  [("this", true), ("expression", true), ("negate", false)],
  [],
  [("this", true), ("quoted", false), ("global_", false), ("temporary", false)],
  [("this", true), ("true", true), ("false", false)],
  [("this", true), ("true", true), ("false", false)],
  [("this", true)],
  [
    ("this", true),
    ("expressions", false),
    ("query", false),
    ("unnest", false),
    ("field", false),
    ("is_global", false),
  ],
  [("input_", false), ("output", false), ("variadic", false)],
  [("this", true), ("alias", false), ("column_def", false)],
  [
    ("this", false),
    ("table", false),
    ("unique", false),
    ("primary", false),
    ("amp", false),
    ("params", false),
  ],
  [
    ("this", false),
    ("expressions", false),
    ("kind", false),
    ("index_type", false),
    ("options", false),
    ("expression", false),
    ("granularity", false),
  ],
  [
    ("key_block_size", false),
    ("using", false),
    ("parser", false),
    ("comment", false),
    ("visible", false),
    ("engine_attr", false),
    ("secondary_engine_attr", false),
  ],
  [
    ("using", false),
    ("include", false),
    ("columns", false),
    ("with_storage", false),
    ("partition_by", false),
    ("tablespace", false),
    ("where", false),
    ("on", false),
  ],
  [("this", true), ("expressions", false), ("target", false)],
  [("expressions", true)],
  [("this", true), ("expression", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("input_format", false), ("output_format", false)],
  [
    ("hint", false),
    ("with_", false),
    ("is_function", false),
    ("this", false),
    ("expression", false),
    ("conflict", false),
    ("returning", false),
    ("overwrite", false),
    ("exists", false),
    ("alternative", false),
    ("where", false),
    ("ignore", false),
    ("by_name", false),
    ("stored", false),
    ("partition", false),
    ("settings", false),
    ("source", false),
    ("default", false),
    ("using", false),
  ],
  [("this", true), ("from_", false), ("force", false)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [
    ("with_", false),
    ("this", true),
    ("expression", true),
    ("distinct", false),
    ("by_name", false),
    ("side", false),
    ("kind", false),
    ("on", false),
    ("match", false),
    ("laterals", false),
    ("joins", false),
    ("connect", false),
    ("pivots", false),
    ("prewhere", false),
    ("where", false),
    ("group", false),
    ("having", false),
    ("qualify", false),
    ("windows", false),
    ("distribute", false),
    ("sort", false),
    ("cluster", false),
    ("order", false),
    ("limit", false),
    ("offset", false),
    ("locks", false),
    ("sample", false),
    ("settings", false),
    ("format", false),
    ("options", false),
    ("for_", false),
  ],
  [("this", false), ("unit", false)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [
    ("this", false),
    ("temporary", false),
    ("unlogged", false),
    ("bulk_collect", false),
    ("expressions", false),
  ],
  [("this", true), ("expression", true)],
  [],
  [("this", true), ("expression", true), ("negate", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("no", false), ("concurrent", false), ("target", false)],
  [("this", true)],
  [("this", false), ("with_", false), ("unique", false)],
  [
    ("expressions", false),
    ("null_handling", false),
    ("return_type", false),
    ("strict", false),
  ],
  [
    ("this", true),
    ("order", false),
    ("null_handling", false),
    ("return_type", false),
    ("strict", false),
  ],
  [("this", true), ("expressions", true)],
  [("this", true), ("expression", true), ("json_type", false)],
  [("this", true), ("expressions", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("path", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true), ("json_type", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [
    ("this", true),
    ("to", true),
    ("format", false),
    ("safe", false),
    ("action", false),
    ("default", false),
  ],
  [
    ("this", false),
    ("kind", false),
    ("path", false),
    ("nested_schema", false),
    ("ordinality", false),
    ("format_json", false),
  ],
  [
    ("this", true),
    ("path", true),
    ("passing", false),
    ("on_condition", false),
    ("from_dcolonqmark", false),
  ],
  [
    ("this", true),
    ("expression", true),
    ("only_json_types", false),
    ("expressions", false),
    ("variant_extract", false),
    ("json_query", false),
    ("option", false),
    ("quote", false),
    ("on_condition", false),
    ("requires_json", false),
    ("emits", false),
  ],
  [("this", true), ("expression", false)],
  [("option", true), ("scalar", false)],
  [
    ("this", true),
    ("expression", true),
    ("only_json_types", false),
    ("expressions", false),
    ("json_type", false),
    ("scalar_only", false),
    ("json_subtype", false),
  ],
  [("this", false), ("options", false), ("is_json", false), ("to_json", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", false), ("expressions", false)],
  [("this", true), ("expression", false), ("mode", false)],
  [
    ("expressions", false),
    ("null_handling", false),
    ("unique_keys", false),
    ("return_type", false),
    ("encoding", false),
  ],
  [
    ("expressions", false),
    ("null_handling", false),
    ("unique_keys", false),
    ("return_type", false),
    ("encoding", false),
  ],
  [("expressions", true)],
  [("this", true)],
  [("this", true), ("quoted", false)],
  [],
  [("this", false)],
  [],
  [("this", true)],
  [("this", true)],
  [("start", false), ("end", false), ("step", false)],
  [("this", true)],
  [("expressions", true)],
  [],
  [("this", true), ("expressions", true)],
  [("expressions", true)],
  [("this", true), ("expressions", true)],
  [
    ("this", true),
    ("expression", false),
    ("include_arrays", false),
    ("remove_empty", false),
  ],
  [
    ("this", true),
    ("schema", true),
    ("path", false),
    ("error_handling", false),
    ("empty_handling", false),
  ],
  [("this", true), ("expression", false)],
  [
    ("this", true),
    ("path", true),
    ("returning", false),
    ("on_condition", false),
  ],
  [("this", true), ("expression", false)],
  [
    ("this", true),
    ("expression", true),
    ("case_insensitive", false),
    ("integer_scale", false),
  ],
  [
    ("this", true),
    ("on", false),
    ("side", false),
    ("kind", false),
    ("using", false),
    ("method", false),
    ("global_", false),
    ("hint", false),
    ("match_condition", false),
    ("directed", false),
    ("expressions", false),
    ("pivots", false),
  ],
  [("this", true), ("expressions", true)],
  [
    ("no", false),
    ("dual", false),
    ("before", false),
    ("local", false),
    ("after", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("kind", false)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("offset", false), ("default", false)],
  [("this", true), ("expressions", true), ("colon", false)],
  [("this", true)],
  [("this", true), ("expression", false)],
  [("this", true), ("unit", false)],
  [("this", true)],
  [
    ("this", true),
    ("view", false),
    ("outer", false),
    ("alias", false),
    ("cross_apply", false),
    ("ordinality", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("offset", false), ("default", false)],
  [("this", true), ("expressions", false), ("ignore_nulls", true)],
  [("this", true)],
  [
    ("this", true),
    ("expression", true),
    ("negative_length_returns_empty", false),
  ],
  [("this", true), ("binary", false), ("encoding", false)],
  [
    ("this", true),
    ("expression", false),
    ("ins_cost", false),
    ("del_cost", false),
    ("sub_cost", false),
    ("max_dist", false),
  ],
  [("this", true), ("expression", true), ("negate", false)],
  [("this", true), ("expressions", false)],
  [
    ("this", false),
    ("expression", true),
    ("offset", false),
    ("limit_options", false),
    ("expressions", false),
  ],
  [("percent", false), ("rows", false), ("with_ties", false)],
  [("expressions", false)],
  [("this", true), ("is_string", true)],
  [("this", true)],
  [
    ("this", true),
    ("local", false),
    ("overwrite", false),
    ("temp", false),
    ("inpath", false),
    ("files", false),
    ("partition", false),
    ("input_format", false),
    ("serde", false),
  ],
  [("this", false)],
  [("this", false)],
  [("this", true)],
  [("update", true), ("expressions", false), ("wait", false), ("key", false)],
  [("this", true)],
  [
    ("this", false),
    ("kind", true),
    ("for_or_in", false),
    ("lock_type", true),
    ("override", false),
  ],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", false)],
  [("no", true)],
  [("this", true)],
  [("this", true)],
  [("body", true), ("label", false)],
  [("this", true)],
  [("this", true), ("case", false)],
  [("this", true)],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", false), ("params_struct", false)],
  [("this", true), ("expression", true), ("params_struct", true)],
  [("this", true), ("expressions", false), ("is_table", false)],
  [("expressions", true)],
  [
    ("year", false),
    ("month", false),
    ("week", false),
    ("day", false),
    ("hour", false),
    ("minute", false),
    ("second", false),
  ],
  [("this", true), ("expression", true)],
  [("keys", false), ("values", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("key", true)],
  [("this", true), ("expressions", true)],
  [("this", true)],
  [("this", true), ("key", false), ("value", true), ("update_flag", false)],
  [("this", true)],
  [("this", true), ("expressions", true)],
  [("this", true)],
  [("this", true), ("expressions", false)],
  [],
  [("this", true), ("expression", true)],
  [("this", true), ("expressions", true), ("modifier", false)],
  [
    ("partition_by", false),
    ("order", false),
    ("measures", false),
    ("rows", false),
    ("after", false),
    ("pattern", false),
    ("define", false),
    ("alias", false),
  ],
  [("this", true), ("window_frame", false)],
  [("this", false)],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [
    ("this", true),
    ("using", true),
    ("on", false),
    ("using_cond", false),
    ("whens", true),
    ("with_", false),
    ("returning", false),
  ],
  [("this", false), ("no", false), ("default", false), ("percent", false)],
  [
    ("expressions", true),
    ("where", false),
    ("group", false),
    ("aggregates", false),
  ],
  [
    ("this", true),
    ("delete", false),
    ("recompress", false),
    ("to_disk", false),
    ("to_volume", false),
  ],
  [("this", true), ("expressions", false)],
  [("this", true), ("expressions", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", false), ("deterministic", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("rename_from", false)],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [("this", true), ("abbreviated", false)],
  [("this", true), ("expression", true), ("roundoff", false)],
  [("this", true), ("expression", true)],
  [("expressions", true), ("kind", true), ("source", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [],
  [("this", true), ("expression", true)],
  [("this", true), ("order", false)],
  [],
  [("this", true)],
  [("this", true), ("stddev", true), ("gen", true)],
  [("this", true), ("form", false), ("is_casefold", false)],
  [("this", true)],
  [],
  [("allow_null", false)],
  [("this", true), ("offset", true), ("from_first", false)],
  [("this", false)],
  [],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("format", true), ("culture", false)],
  [("this", true), ("true", true), ("false", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false)],
  [("this", true)],
  [("this", true), ("key", true), ("value", true), ("update_flag", false)],
  [("this", true), ("keep", false), ("set_", false)],
  [("this", false), ("expression", true), ("expressions", false)],
  [("this", true)],
  [("delete", false)],
  [("error", false), ("empty", false), ("null", false)],
  [
    ("duplicate", false),
    ("expressions", false),
    ("action", false),
    ("conflict_keys", false),
    ("index_predicate", false),
    ("constraint", false),
    ("where", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("path", false), ("expressions", false)],
  [("this", true), ("kind", true), ("path", false), ("as_json", false)],
  [("this", true), ("operator", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", false), ("expressions", true), ("siblings", false)],
  [("this", true), ("desc", false), ("nulls_first", true), ("with_fill", false)],
  [("this", true)],
  [("this", false), ("with_count", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true), ("from_", true), ("for_", false)],
  [
    ("this", true),
    ("expression", true),
    ("fill_pattern", false),
    ("is_left", true),
  ],
  [("this", true), ("expression", false)],
  [("this", true)],
  [("this", true), ("expressions", true), ("params", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("format", false), ("zone", false), ("default_year", false)],
  [("this", true), ("type", true), ("permissive", false)],
  [
    ("this", true),
    ("expression", false),
    ("safe", false),
    ("is_literal", false),
  ],
  [("this", true)],
  [("this", true), ("format", true)],
  [
    ("this", true),
    ("part_to_extract", false),
    ("key", false),
    ("permissive", false),
  ],
  [("expressions", true), ("subpartition", false)],
  [
    ("this", false),
    ("expression", false),
    ("from_expressions", false),
    ("to_expressions", false),
  ],
  [("partition_expressions", true), ("create_expressions", true)],
  [("partition_expressions", true), ("create_expressions", true)],
  [("this", false), ("start", true), ("end", true), ("every", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("expressions", true)],
  [("this", true), ("expression", false), ("expressions", false)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("expressions", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", true)],
  [],
  [
    ("this", false),
    ("alias", false),
    ("expressions", false),
    ("fields", false),
    ("unpivot", false),
    ("using", false),
    ("group", false),
    ("columns", false),
    ("include_nulls", false),
    ("default_on_null", false),
    ("into", false),
    ("with_", false),
    ("identify_pivot_strings", false),
    ("prefixed_pivot_columns", false),
    ("pivot_column_naming", false),
    ("value_columns_first", false),
  ],
  [("this", true), ("alias", false)],
  [("this", false)],
  [("this", false), ("kind", false), ("widget", false), ("jdbc", false)],
  [("this", true), ("expressions", false)],
  [("this", true), ("expressions", false)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("params_struct", false)],
  [("this", true), ("expression", true)],
  [
    ("this", false),
    ("expressions", true),
    ("options", false),
    ("include", false),
  ],
  [("desc", false), ("options", false)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("expressions", true)],
  [("this", true), ("value", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [
    ("this", true),
    ("table", false),
    ("db", false),
    ("catalog", false),
    ("join_mark", false),
    ("shadow", false),
  ],
  [("this", true), ("target", true), ("properties", false)],
  [("this", true)],
  [("this", true), ("quantile", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("scope", false), ("update", false)],
  [("this", true), ("expression", false)],
  [
    ("expressions", true),
    ("command_script", true),
    ("schema", false),
    ("row_format_before", false),
    ("record_writer", false),
    ("row_format_after", false),
    ("record_reader", false),
  ],
  [("this", true)],
  [("this", false), ("lower", false), ("upper", false)],
  [("this", false)],
  [("this", true), ("generator", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expressions", true), ("each", false)],
  [("expressions", false)],
  [("this", true)],
  [("this", true), ("expressions", false)],
  [("expressions", true)],
  [("kind", true), ("this", true), ("expression", true), ("using", false)],
  [("this", true), ("initial", true), ("merge", true), ("finish", false)],
  [("this", true), ("expressions", false), ("options", false)],
  [("this", true), ("kind", true)],
  [
    ("method", false),
    ("kind", false),
    ("every", false),
    ("unit", false),
    ("starts", false),
  ],
  [("this", true)],
  [
    ("this", true),
    ("expression", true),
    ("position", false),
    ("parameters", false),
  ],
  [
    ("this", true),
    ("expression", true),
    ("position", false),
    ("occurrence", false),
    ("parameters", false),
    ("group", false),
    ("null_if_pos_overflow", false),
  ],
  [
    ("this", true),
    ("expression", true),
    ("group", false),
    ("parameters", false),
    ("position", false),
    ("occurrence", false),
  ],
  [("this", true), ("expression", true), ("options", false)],
  [("this", true), ("expression", true), ("flag", false)],
  [
    ("this", true),
    ("expression", true),
    ("position", false),
    ("occurrence", false),
    ("option", false),
    ("parameters", false),
    ("group", false),
  ],
  [("this", true), ("expression", true), ("flag", false), ("full_match", false)],
  [
    ("this", true),
    ("expression", true),
    ("replacement", false),
    ("position", false),
    ("occurrence", false),
    ("modifiers", false),
    ("single_replace", false),
  ],
  [("this", true), ("expression", true), ("limit", false), ("mode", false)],
  [
    ("this", true),
    ("expression", true),
    ("position", false),
    ("occurrence", false),
    ("parameters", false),
    ("group", false),
  ],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("to", true), ("exists", false)],
  [("this", true), ("to", true)],
  [("this", true), ("times", true)],
  [("body", true), ("until", true), ("label", false)],
  [("this", true), ("expression", true), ("replacement", false)],
  [("expression", true), ("source", true)],
  [("this", true)],
  [("this", true)],
  [("expressions", true), ("into", false)],
  [("this", false), ("is_table", false), ("table", false), ("null", false)],
  [("this", true)],
  [
    ("privileges", true),
    ("kind", false),
    ("securable", true),
    ("principals", true),
    ("grant_option", false),
    ("cascade", false),
  ],
  [
    ("this", true),
    ("expression", true),
    ("negative_length_returns_empty", false),
  ],
  [("this", true)],
  [("savepoint", false), ("this", false)],
  [("expressions", false)],
  [
    ("this", true),
    ("expressions", true),
    ("from_index", false),
    ("properties", false),
  ],
  [("expressions", true)],
  [
    ("this", true),
    ("decimals", false),
    ("truncate", false),
    ("casts_non_integer_decimals", false),
  ],
  [("this", false), ("expressions", false)],
  [
    ("fields", false),
    ("escaped", false),
    ("collection_items", false),
    ("map_keys", false),
    ("lines", false),
    ("null", false),
    ("serde", false),
  ],
  [("this", true)],
  [("this", true), ("serde_properties", false)],
  [("this", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("length", false)],
  [("this", true), ("length", false)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", false), ("expressions", false)],
  [("this", true)],
  [("this", false), ("expression", true)],
  [
    ("this", true),
    ("expression", true),
    ("json_scope", false),
    ("analyzer", false),
    ("analyzer_options", false),
    ("search_mode", false),
  ],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [],
  [],
  [
    ("with_", false),
    ("kind", false),
    ("expressions", false),
    ("hint", false),
    ("distinct", false),
    ("into", false),
    ("from_", false),
    ("operation_modifiers", false),
    ("exclude", false),
    ("match", false),
    ("laterals", false),
    ("joins", false),
    ("connect", false),
    ("pivots", false),
    ("prewhere", false),
    ("where", false),
    ("group", false),
    ("having", false),
    ("qualify", false),
    ("windows", false),
    ("distribute", false),
    ("sort", false),
    ("cluster", false),
    ("order", false),
    ("limit", false),
    ("offset", false),
    ("locks", false),
    ("sample", false),
    ("settings", false),
    ("format", false),
    ("options", false),
    ("for_", false),
  ],
  [("this", true)],
  [
    ("this", true),
    ("metrics", false),
    ("dimensions", false),
    ("facts", false),
    ("where", false),
  ],
  [],
  [("this", false)],
  [("this", false)],
  [("this", false)],
  [("this", false)],
  [
    ("increment", false),
    ("minvalue", false),
    ("maxvalue", false),
    ("cache", false),
    ("start", false),
    ("owned", false),
    ("options", false),
  ],
  [("expressions", true), ("with_", false)],
  [("this", true), ("kind", false)],
  [],
  [("expressions", false), ("unset", false), ("tag", false)],
  [("this", true)],
  [
    ("this", false),
    ("expressions", false),
    ("kind", false),
    ("collate", false),
    ("global_", false),
  ],
  [
    ("with_", false),
    ("this", true),
    ("expression", true),
    ("distinct", false),
    ("by_name", false),
    ("side", false),
    ("kind", false),
    ("on", false),
    ("match", false),
    ("laterals", false),
    ("joins", false),
    ("connect", false),
    ("pivots", false),
    ("prewhere", false),
    ("where", false),
    ("group", false),
    ("having", false),
    ("qualify", false),
    ("windows", false),
    ("distribute", false),
    ("sort", false),
    ("cluster", false),
    ("order", false),
    ("limit", false),
    ("offset", false),
    ("locks", false),
    ("sample", false),
    ("settings", false),
    ("format", false),
    ("options", false),
    ("for_", false),
  ],
  [("multi", true)],
  [("expressions", true)],
  [("this", false)],
  [
    ("this", true),
    ("history", false),
    ("terse", false),
    ("target", false),
    ("offset", false),
    ("starts_with", false),
    ("limit", false),
    ("from_", false),
    ("like", false),
    ("where", false),
    ("db", false),
    ("scope", false),
    ("scope_kind", false),
    ("full", false),
    ("mutex", false),
    ("query", false),
    ("channel", false),
    ("global_", false),
    ("log", false),
    ("position", false),
    ("types", false),
    ("privileges", false),
    ("for_table", false),
    ("for_group", false),
    ("for_user", false),
    ("for_role", false),
    ("into_outfile", false),
    ("json", false),
    ("iceberg", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("regexp", false), ("expression", true)],
  [("this", false), ("expression", false), ("step", false)],
  [("this", false), ("expressions", true), ("siblings", false)],
  [("this", true), ("asc", false), ("nulls_first", false)],
  [("this", true), ("compound", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [
    ("this", true),
    ("expression", true),
    ("limit", false),
    ("null_returns_null", false),
    ("empty_delimiter_returns_whole", false),
  ],
  [
    ("this", true),
    ("delimiter", false),
    ("part_index", false),
    ("part_index_zero_as_one", false),
    ("empty_delimiter_returns_whole", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expression", true), ("use_spheroid", false)],
  [("this", true), ("expression", true), ("z", false), ("m", false)],
  [("this", true)],
  [("this", true), ("expressions", true)],
  [("this", true), ("expression", false)],
  [("except_", false), ("replace", false), ("rename", false), ("ilike", false)],
  [("this", true)],
  [("this", true), ("expression", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("expressions", false), ("wrapped", false)],
  [
    ("this", true),
    ("substr", true),
    ("position", false),
    ("occurrence", false),
    ("clamp_position", false),
  ],
  [("this", true), ("format", false), ("safe", false), ("default_year", false)],
  [
    ("this", true),
    ("pair_delim", false),
    ("key_value_delim", false),
    ("duplicate_resolution_callback", false),
  ],
  [
    ("this", true),
    ("format", true),
    ("zone", false),
    ("safe", false),
    ("target_type", false),
    ("default_year", false),
  ],
  [("this", false), ("format", false)],
  [("this", true)],
  [],
  [],
  [("this", true), ("zone", false)],
  [("this", true), ("expression", false), ("null", false)],
  [("this", true)],
  [("this", true), ("delimiter", false), ("part_index", false)],
  [("this", true), ("expression", false)],
  [("expressions", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("start", true), ("length", true), ("expression", true)],
  [("this", true), ("expression", true)],
  [
    ("this", true),
    ("alias", false),
    ("with_", false),
    ("match", false),
    ("laterals", false),
    ("joins", false),
    ("connect", false),
    ("pivots", false),
    ("prewhere", false),
    ("where", false),
    ("group", false),
    ("having", false),
    ("qualify", false),
    ("windows", false),
    ("distribute", false),
    ("sort", false),
    ("cluster", false),
    ("order", false),
    ("limit", false),
    ("offset", false),
    ("locks", false),
    ("sample", false),
    ("settings", false),
    ("format", false),
    ("options", false),
    ("for_", false),
  ],
  [("this", true)],
  [("this", true), ("start", false), ("length", false), ("zero_start", false)],
  [("this", true), ("delimiter", true), ("count", true)],
  [("this", true)],
  [("this", true), ("table", false)],
  [("this", true)],
  [("this", false)],
  [
    ("this", false),
    ("alias", false),
    ("db", false),
    ("catalog", false),
    ("laterals", false),
    ("joins", false),
    ("pivots", false),
    ("hints", false),
    ("system_time", false),
    ("version", false),
    ("format", false),
    ("pattern", false),
    ("ordinality", false),
    ("when", false),
    ("only", false),
    ("partition", false),
    ("changes", false),
    ("rows_from", false),
    ("sample", false),
    ("indexed", false),
  ],
  [("this", false), ("columns", false)],
  [("this", true)],
  [
    ("this", true),
    ("alias", false),
    ("joins", false),
    ("pivots", false),
    ("sample", false),
  ],
  [
    ("expressions", false),
    ("method", false),
    ("bucket_numerator", false),
    ("bucket_denominator", false),
    ("bucket_field", false),
    ("percent", false),
    ("rows", false),
    ("size", false),
    ("seed", false),
  ],
  [("this", false), ("prefix", false), ("postfix", false)],
  [("expressions", true)],
  [("this", true)],
  [("this", true)],
  [("this", false)],
  [("this", false), ("zone", false)],
  [("this", true), ("expression", true), ("unit", false)],
  [("this", true), ("expression", true), ("unit", false)],
  [
    ("hour", true),
    ("min", true),
    ("sec", true),
    ("nano", false),
    ("fractions", false),
    ("precision", false),
    ("overflow", false),
  ],
  [("this", true), ("expression", true), ("unit", true), ("kind", false)],
  [("this", true)],
  [("this", true), ("zone", false)],
  [("this", true)],
  [("this", true), ("expression", true), ("unit", false)],
  [("this", true), ("format", true), ("culture", false), ("zone", false)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("unit", true), ("zone", false)],
  [("this", true)],
  [("this", true)],
  [("this", false), ("zone", false), ("with_tz", false)],
  [("this", true), ("expression", true), ("unit", false)],
  [("this", true), ("expression", true), ("unit", false)],
  [
    ("year", false),
    ("month", false),
    ("day", false),
    ("hour", false),
    ("min", false),
    ("sec", false),
    ("nano", false),
    ("zone", false),
    ("milli", false),
    ("this", false),
    ("expression", false),
  ],
  [
    ("year", false),
    ("month", false),
    ("day", false),
    ("hour", false),
    ("min", false),
    ("sec", false),
    ("nano", false),
  ],
  [("this", true), ("expression", true), ("unit", false)],
  [
    ("this", true),
    ("unit", true),
    ("zone", false),
    ("input_type_preserved", false),
  ],
  [
    ("year", false),
    ("month", false),
    ("day", false),
    ("hour", false),
    ("min", false),
    ("sec", false),
    ("nano", false),
    ("zone", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("format", false), ("safe", false)],
  [("this", true), ("safe", false)],
  [
    ("this", true),
    ("format", false),
    ("nlsparam", false),
    ("is_numeric", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true), ("format", false)],
  [("this", true), ("format", false), ("safe", false)],
  [("this", true), ("path", false), ("safe", false)],
  [("this", true)],
  [
    ("this", true),
    ("format", false),
    ("nlsparam", false),
    ("precision", false),
    ("scale", false),
    ("safe", false),
    ("safe_name", false),
    ("default", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", false), ("modes", false), ("mark", false)],
  [("this", true), ("expression", true)],
  [("expressions", true)],
  [("this", false)],
  [("this", true), ("from_", true), ("to", true)],
  [("this", true), ("expression", true), ("with_error", false)],
  [("this", true), ("columns", false)],
  [("this", true)],
  [
    ("table", true),
    ("timing", true),
    ("events", true),
    ("execute", true),
    ("constraint", false),
    ("referenced_table", false),
    ("deferrable", false),
    ("initially", false),
    ("referencing", false),
    ("for_each", false),
    ("when", false),
  ],
  [("old", false), ("new", false)],
  [
    ("this", true),
    ("expression", false),
    ("position", false),
    ("collation", false),
  ],
  [("this", true), ("decimals", false), ("fractions_supported", false)],
  [
    ("expressions", true),
    ("is_database", false),
    ("exists", false),
    ("only", false),
    ("cluster", false),
    ("identity", false),
    ("option", false),
    ("partition", false),
  ],
  [("this", true)],
  [("this", true), ("alphabet", false)],
  [("this", true), ("alphabet", false)],
  [
    ("this", true),
    ("to", true),
    ("format", false),
    ("safe", false),
    ("action", false),
    ("default", false),
    ("requires_string", false),
    ("null_on_text_overflow", false),
    ("probe_date_format", false),
  ],
  [("this", true)],
  [("this", true)],
  [("this", true), ("format", false)],
  [("this", true)],
  [
    ("this", true),
    ("expression", true),
    ("unit", false),
    ("return_type", false),
  ],
  [("this", true), ("expression", true), ("unit", false)],
  [("this", true), ("format", false), ("safe", false), ("default_date", false)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("format", false), ("safe", false)],
  [("this", true)],
  [("expressions", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("exists", false)],
  [("this", true), ("kind", true), ("rename", false)],
  [("this", true), ("expression", false)],
  [("this", true), ("empty_is_zero", false)],
  [("this", true), ("escape", false)],
  [("this", true), ("expression", true), ("gen", false), ("seed", false)],
  [
    ("with_", false),
    ("this", true),
    ("expression", true),
    ("distinct", false),
    ("by_name", false),
    ("side", false),
    ("kind", false),
    ("on", false),
    ("match", false),
    ("laterals", false),
    ("joins", false),
    ("connect", false),
    ("pivots", false),
    ("prewhere", false),
    ("where", false),
    ("group", false),
    ("having", false),
    ("qualify", false),
    ("windows", false),
    ("distribute", false),
    ("sort", false),
    ("cluster", false),
    ("order", false),
    ("limit", false),
    ("offset", false),
    ("locks", false),
    ("sample", false),
    ("settings", false),
    ("format", false),
    ("options", false),
    ("for_", false),
  ],
  [
    ("this", false),
    ("index_type", false),
    ("on_conflict", false),
    ("nulls", false),
    ("options", false),
  ],
  [("expressions", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [("this", true), ("format", false)],
  [
    ("this", true),
    ("scale", false),
    ("zone", false),
    ("hours", false),
    ("minutes", false),
    ("format", false),
    ("target_type", false),
  ],
  [("this", true)],
  [],
  [
    ("expressions", true),
    ("alias", false),
    ("offset", false),
    ("explode_array", false),
  ],
  [("this", true), ("expressions", true)],
  [
    ("with_", false),
    ("this", false),
    ("expressions", false),
    ("from_", false),
    ("where", false),
    ("returning", false),
    ("order", false),
    ("limit", false),
    ("options", false),
    ("hint", false),
  ],
  [("this", true)],
  [],
  [("this", false), ("expressions", false), ("kind", false)],
  [("this", true), ("expressions", false), ("wrapped", false)],
  [("this", true)],
  [("this", true), ("kind", true)],
  [("this", true)],
  [],
  [("this", false)],
  [("this", false)],
  [("this", false), ("name", false), ("is_string", false)],
  [("this", true)],
  [
    ("expressions", true),
    ("alias", false),
    ("order", false),
    ("limit", false),
    ("offset", false),
  ],
  [("this", true)],
  [("keys", true), ("values", true)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [
    ("this", true),
    ("column_to_search", true),
    ("query_table", true),
    ("query_column_to_search", false),
    ("top_k", false),
    ("distance_type", false),
    ("options", false),
  ],
  [("this", true), ("kind", true), ("expression", false)],
  [("this", true)],
  [],
  [("this", false)],
  [("this", true), ("expression", true)],
  [("this", true), ("mode", false)],
  [("this", true)],
  [("this", true)],
  [("matched", true), ("source", false), ("condition", false), ("then", true)],
  [("expressions", true)],
  [("this", true)],
  [("this", true), ("body", true), ("label", false)],
  [
    ("this", true),
    ("min_value", false),
    ("max_value", false),
    ("num_buckets", false),
    ("threshold", false),
  ],
  [
    ("this", true),
    ("partition_by", false),
    ("order", false),
    ("spec", false),
    ("alias", false),
    ("over", false),
    ("first", false),
  ],
  [
    ("kind", false),
    ("start", false),
    ("start_side", false),
    ("end", false),
    ("end_side", false),
    ("exclude", false),
  ],
  [
    ("expressions", false),
    ("recursive", false),
    ("search", false),
    ("udfs", false),
  ],
  [("no", true), ("statistics", false)],
  [("from_", false), ("to", false), ("step", false), ("interpolate", false)],
  [("this", true)],
  [("this", true), ("op", true)],
  [("expressions", true)],
  [("this", true)],
  [
    ("on", false),
    ("this", false),
    ("data_consistency", false),
    ("retention_period", false),
    ("with_", true),
  ],
  [("expressions", true)],
  [("this", true), ("expression", false)],
  [("this", true), ("expressions", false), ("evalname", false)],
  [("this", true), ("expression", true), ("instance", false)],
  [("this", true), ("expression", false)],
  [("this", true)],
  [
    ("this", true),
    ("namespaces", false),
    ("passing", false),
    ("columns", false),
    ("by_ref", false),
  ],
  [("this", true), ("expression", true), ("round_input", false)],
  [("this", true)],
  [("this", true)],
  [("this", true)],
  [],
  [("this", true), ("elementcount", true), ("gen", true)],
  [("this", true), ("expressions", false)],
  [("unit", false)],
]

///|
let kind_var_len : FixedArray[Bool] = [
  false, false, true, false, true, true, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, true, true, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, true, false, true, false,
  false, false, false, false, false, false, false, true, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  true, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, true,
  true, false, false, false, false, false, true, false, false, false, false, false,
  false, false, false, false, false, false, false, false, true, false, false, false,
  false, false, false, false, false, false, false, true, true, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, true, false, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, true, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, true, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, true, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, true, false, false, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, true, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, true, false, false, true,
  true, false, false, true, false, false, false, false, false, false, false, false,
  false, true, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, true, false, true,
  false, true, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, true, false, false, true, false, false, true, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, true, false, true, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, true, false,
  false, false, false, false, false, false, false, true, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, true, false, false, false, true, false, false, false, false, false,
  false, false, false, true, false, false, false, false, false, true, true, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  true, false, false, false, false, false, false, false, false, true, true, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, true, false, true, true, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, true, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, true, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, true, false,
]

///|
let kind_is_subquery : FixedArray[Bool] = [
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, true,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false,
]

///|
let kind_is_cast : FixedArray[Bool] = [
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, true, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, true, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  true, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false,
]

///|
let kind_is_data_type : FixedArray[Bool] = [
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  true, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, true, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false,
]

///|
let kind_is_primitive : FixedArray[Bool] = [
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  true, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, true, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, true, false,
  false, false, false, false, false, false, false, true, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, true, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, true, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, true, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, true, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false,
]

///|
let kind_hash_raw_args : FixedArray[Bool] = [
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, true, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, true, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false,
]

///|
let kind_var_len_arg_key : FixedArray[String] = [
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "values", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions", "expressions", "expressions", "expressions",
  "expressions", "expressions", "expressions",
]

///|
let kind_is_trait : FixedArray[Bool] = [
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, true, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, true, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, true, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, true, false, false,
  false, true, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, true, true, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, true, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, true, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, true, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, true, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, true, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, true, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, true, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  true, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, true, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, true, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false, false, false, false,
  false, false, false, false, false, false, false, false, false,
]

///|
let kind_sql_names : FixedArray[FixedArray[String]] = [
  ["AI_AGG"],
  ["AI_CLASSIFY"],
  ["AI_EMBED"],
  ["A_I_FORECAST"],
  ["AI_GENERATE"],
  ["AI_SIMILARITY"],
  ["AI_SUMMARIZE_AGG"],
  ["ABS"],
  ["ACOS"],
  ["ACOSH"],
  [],
  [],
  ["ADD_MONTHS"],
  [],
  [],
  ["AGG"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["AND"],
  ["ANONYMOUS"],
  ["ANONYMOUS_AGG_FUNC"],
  [],
  ["ANY_VALUE"],
  [],
  [],
  ["APPLY"],
  ["APPROX_DISTINCT", "APPROX_COUNT_DISTINCT"],
  ["APPROX_PERCENTILE_ACCUMULATE"],
  ["APPROX_PERCENTILE_COMBINE"],
  ["APPROX_PERCENTILE_ESTIMATE"],
  ["APPROX_QUANTILE"],
  ["APPROX_QUANTILES"],
  ["APPROX_TOP_K"],
  ["APPROX_TOP_K_ACCUMULATE"],
  ["APPROX_TOP_K_COMBINE"],
  ["APPROX_TOP_K_ESTIMATE"],
  ["APPROX_TOP_SUM"],
  ["APPROXIMATE_SIMILARITY", "APPROXIMATE_JACCARD_INDEX"],
  ["ARG_MAX", "ARGMAX", "MAX_BY"],
  ["ARG_MIN", "ARGMIN", "MIN_BY"],
  ["ARRAY"],
  ["ARRAY_AGG"],
  ["ARRAY_ALL"],
  ["ARRAY_ANY"],
  ["ARRAY_APPEND"],
  ["ARRAY_COMPACT"],
  ["ARRAY_CONCAT", "ARRAY_CAT"],
  ["ARRAY_CONCAT_AGG"],
  ["ARRAY_CONSTRUCT_COMPACT"],
  ["ARRAY_CONTAINED_BY"],
  ["ARRAY_CONTAINS", "ARRAY_HAS"],
  ["ARRAY_CONTAINS_ALL", "ARRAY_HAS_ALL"],
  ["ARRAY_DISTINCT"],
  ["ARRAY_EXCEPT"],
  ["FILTER", "ARRAY_FILTER"],
  ["ARRAY_FIRST"],
  ["ARRAY_INSERT"],
  ["ARRAY_INTERSECT", "ARRAY_INTERSECTION"],
  ["ARRAY_LAST"],
  ["ARRAY_MAX"],
  ["ARRAY_MIN"],
  ["ARRAY_OVERLAPS"],
  ["ARRAY_POSITION"],
  ["ARRAY_PREPEND"],
  ["ARRAY_REMOVE"],
  ["ARRAY_REMOVE_AT"],
  ["ARRAY_REVERSE"],
  ["ARRAY_SIZE", "ARRAY_LENGTH"],
  ["ARRAY_SLICE"],
  ["ARRAY_SORT"],
  ["ARRAY_SUM"],
  ["ARRAY_TO_STRING", "ARRAY_JOIN"],
  ["ARRAY_UNION_AGG"],
  ["ARRAY_UNIQUE_AGG"],
  ["ARRAYS_ZIP"],
  ["ASCII"],
  ["ASIN"],
  ["ASINH"],
  [],
  [],
  [],
  ["ATAN"],
  ["ATAN2"],
  ["ATANH"],
  [],
  [],
  [],
  [],
  [],
  ["AVG"],
  [],
  ["BASE64_DECODE_BINARY"],
  ["BASE64_DECODE_STRING"],
  ["BASE64_ENCODE"],
  [],
  [],
  [],
  ["BIT_LENGTH"],
  [],
  ["BITMAP_BIT_POSITION"],
  ["BITMAP_BUCKET_NUMBER"],
  ["BITMAP_CONSTRUCT_AGG"],
  ["BITMAP_COUNT"],
  ["BITMAP_OR_AGG"],
  [],
  ["BITWISE_AND_AGG"],
  ["BITWISE_COUNT"],
  [],
  [],
  [],
  ["BITWISE_OR_AGG"],
  [],
  [],
  ["BITWISE_XOR_AGG"],
  [],
  [],
  ["BOOLAND"],
  [],
  ["BOOLNOT"],
  ["BOOLOR"],
  ["BOOLXOR_AGG"],
  [],
  [],
  ["BYTE_LENGTH"],
  [],
  [],
  [],
  [],
  ["CASE"],
  [],
  [],
  ["CAST"],
  ["CAST_TO_STR_TYPE"],
  [],
  ["CBRT"],
  ["CEIL", "CEILING"],
  [],
  [],
  [],
  [],
  [],
  [],
  ["CHECK_JSON"],
  ["CHECK_XML"],
  [],
  ["CHR", "CHAR"],
  ["CITY_HASH64"],
  [],
  [],
  [],
  [],
  [],
  ["COALESCE", "IFNULL", "NVL"],
  ["CODE_POINTS_TO_BYTES"],
  ["CODE_POINTS_TO_STRING"],
  ["COLLATE"],
  [],
  [],
  ["COLLATION"],
  [],
  [],
  [],
  [],
  [],
  [],
  ["COLUMNS"],
  ["COMBINED_AGG_FUNC"],
  ["COMBINED_PARAMETERIZED_AGG"],
  [],
  [],
  [],
  [],
  [],
  ["COMPRESS"],
  [],
  [],
  [],
  ["CONCAT"],
  ["CONCAT_WS"],
  [],
  [],
  [],
  ["CONNECT_BY_ROOT"],
  [],
  [],
  ["CONTAINS"],
  ["CONVERT"],
  ["CONVERT_TIMEZONE"],
  ["CONVERT_TO_CHARSET"],
  [],
  [],
  [],
  ["CORR"],
  ["COS"],
  ["COSH"],
  ["COSINE_DISTANCE"],
  ["COT"],
  ["COTH"],
  ["COUNT"],
  ["COUNT_IF", "COUNTIF"],
  ["COVAR_POP"],
  ["COVAR_SAMP"],
  [],
  [],
  [],
  ["CSC"],
  ["CSCH"],
  [],
  ["CUME_DIST"],
  ["CURRENT_ACCOUNT"],
  ["CURRENT_ACCOUNT_NAME"],
  ["CURRENT_AVAILABLE_ROLES"],
  ["CURRENT_CATALOG"],
  ["CURRENT_CLIENT"],
  ["CURRENT_DATABASE"],
  ["CURRENT_DATE"],
  ["CURRENT_DATETIME"],
  ["CURRENT_IP_ADDRESS"],
  ["CURRENT_ORGANIZATION_NAME"],
  ["CURRENT_ORGANIZATION_USER"],
  ["CURRENT_REGION"],
  ["CURRENT_ROLE"],
  ["CURRENT_ROLE_TYPE"],
  ["CURRENT_SCHEMA"],
  ["CURRENT_SCHEMAS"],
  ["CURRENT_SECONDARY_ROLES"],
  ["CURRENT_SESSION"],
  ["CURRENT_STATEMENT"],
  ["CURRENT_TIME"],
  ["CURRENT_TIMESTAMP"],
  ["CURRENT_TIMESTAMP_L_T_Z"],
  ["CURRENT_TIMEZONE"],
  ["CURRENT_TRANSACTION"],
  ["CURRENT_USER"],
  ["CURRENT_USER_ID"],
  ["CURRENT_VERSION"],
  ["CURRENT_WAREHOUSE"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["DATE"],
  ["DATE_ADD"],
  ["DATE_BIN"],
  ["DATEDIFF", "DATE_DIFF"],
  [],
  ["DATE_FROM_PARTS", "DATEFROMPARTS"],
  ["DATE_FROM_UNIX_DATE"],
  ["DATE_STR_TO_DATE"],
  ["DATE_SUB"],
  ["DATE_TO_DATE_STR"],
  ["DATE_TO_DI"],
  ["DATE_TRUNC"],
  ["DATETIME"],
  ["DATETIME_ADD"],
  ["DATETIME_DIFF"],
  ["DATETIME_SUB"],
  ["DATETIME_TRUNC"],
  ["DAY"],
  ["DAY_OF_MONTH", "DAYOFMONTH"],
  ["DAY_OF_WEEK", "DAYOFWEEK"],
  ["DAYOFWEEK_ISO", "ISODOW"],
  ["DAY_OF_YEAR", "DAYOFYEAR"],
  ["DAYNAME"],
  [],
  [],
  ["DECODE"],
  ["DECODE_CASE"],
  ["DECOMPRESS_BINARY"],
  ["DECOMPRESS_STRING"],
  ["DECRYPT"],
  ["DECRYPT_RAW"],
  [],
  [],
  ["DEGREES"],
  [],
  ["DENSE_RANK"],
  [],
  [],
  [],
  ["DI_TO_DATE"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["DOT_PRODUCT"],
  [],
  [],
  [],
  [],
  ["DYNAMIC_IDENTIFIER"],
  [],
  [],
  ["ELT"],
  [],
  ["ENCODE"],
  [],
  [],
  ["ENCRYPT"],
  ["ENCRYPT_RAW"],
  [],
  ["ENDS_WITH", "ENDSWITH"],
  [],
  [],
  [],
  ["EQUAL_NULL"],
  [],
  ["EUCLIDEAN_DISTANCE"],
  [],
  [],
  [],
  [],
  [],
  ["EXISTS"],
  ["EXP"],
  ["EXPLODE"],
  [],
  ["EXPLODING_GENERATE_SERIES"],
  [],
  [],
  [],
  [],
  [],
  ["EXTRACT"],
  ["FACTORIAL"],
  [],
  ["FARM_FINGERPRINT", "FARMFINGERPRINT64"],
  ["FEATURES_AT_TIME"],
  [],
  [],
  [],
  [],
  ["FIRST"],
  ["FIRST_VALUE"],
  ["FLATTEN"],
  ["FLOAT64"],
  ["FLOOR"],
  [],
  [],
  [],
  [],
  ["FORMAT"],
  [],
  [],
  [],
  [],
  ["FROM_BASE"],
  ["FROM_BASE32"],
  ["FROM_BASE64"],
  ["FROM_ISO8601_DATE"],
  ["FROM_ISO8601_TIMESTAMP"],
  ["FROM_ISO8601_TIMESTAMP_NANOS"],
  ["FROM_JSON"],
  [],
  [],
  [],
  [],
  [],
  ["GAP_FILL"],
  ["GENERATE_BOOL"],
  ["GENERATE_DATE_ARRAY"],
  ["GENERATE_DOUBLE"],
  ["GENERATE_EMBEDDING"],
  ["GENERATE_INT"],
  ["GENERATE_SERIES"],
  ["GENERATE_TABLE"],
  ["GENERATE_TEXT"],
  ["GENERATE_TIMESTAMP_ARRAY"],
  [],
  [],
  ["GENERATOR"],
  [],
  ["GET_EXTRACT"],
  ["GET_IGNORE_CASE"],
  ["GETBIT", "GET_BIT"],
  [],
  [],
  [],
  [],
  [],
  ["GREATEST"],
  [],
  ["GROUP_CONCAT"],
  ["GROUPING"],
  ["GROUPING_ID"],
  [],
  [],
  ["HASH_AGG"],
  [],
  [],
  [],
  [],
  ["HEX"],
  ["HEX_DECODE_STRING"],
  [],
  [],
  [],
  ["HLL"],
  ["HOST"],
  ["HOUR"],
  [],
  [],
  [],
  [],
  ["IF", "IIF"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["INITCAP"],
  ["INLINE"],
  [],
  [],
  [],
  [],
  [],
  ["INT64"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["IS_ARRAY"],
  ["IS_ASCII"],
  ["IS_INF", "ISINF"],
  ["IS_NAN", "ISNAN"],
  ["IS_NULL_VALUE"],
  [],
  [],
  [],
  ["J_S_O_N_ARRAY"],
  ["J_S_O_N_ARRAY_AGG"],
  ["JSON_ARRAY_APPEND"],
  ["JSON_ARRAY_CONTAINS"],
  ["JSON_ARRAY_INSERT"],
  ["JSONB_CONTAINS"],
  ["J_S_O_N_B_CONTAINS_ALL_TOP_KEYS"],
  ["J_S_O_N_B_CONTAINS_ANY_TOP_KEYS"],
  ["J_S_O_N_B_CONTAINS_TOP_KEY"],
  ["J_S_O_N_B_DELETE_AT_PATH"],
  ["JSONB_EXISTS"],
  ["JSONB_EXTRACT"],
  ["JSONB_EXTRACT_SCALAR"],
  ["J_S_O_N_B_OBJECT_AGG"],
  ["J_S_O_N_B_PATH_EXISTS"],
  ["J_S_O_N_BOOL"],
  ["J_S_O_N_CAST"],
  [],
  ["J_S_O_N_EXISTS"],
  ["JSON_EXTRACT"],
  ["JSON_EXTRACT_ARRAY"],
  [],
  ["JSON_EXTRACT_SCALAR"],
  ["JSON_FORMAT"],
  [],
  ["JSON_KEYS"],
  ["J_S_O_N_KEYS_AT_DEPTH"],
  ["J_S_O_N_OBJECT"],
  ["J_S_O_N_OBJECT_AGG"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["JSON_REMOVE"],
  [],
  ["JSON_SET"],
  ["JSON_STRIP_NULLS"],
  ["J_S_O_N_TABLE"],
  ["JSON_TYPE"],
  [],
  ["J_S_O_N_VALUE_ARRAY"],
  ["JAROWINKLER_SIMILARITY"],
  [],
  [],
  [],
  ["JUSTIFY_DAYS"],
  ["JUSTIFY_HOURS"],
  ["JUSTIFY_INTERVAL"],
  [],
  ["KURTOSIS"],
  [],
  [],
  [],
  ["LAG"],
  [],
  [],
  ["LAST"],
  ["LAST_DAY", "LAST_DAY_OF_MONTH"],
  ["LAST_VALUE"],
  [],
  ["LAX_BOOL"],
  ["LAX_FLOAT64"],
  ["LAX_INT64"],
  ["LAX_STRING"],
  ["LEAD"],
  ["LEAST"],
  [],
  ["LEFT"],
  ["LENGTH", "LEN", "CHAR_LENGTH", "CHARACTER_LENGTH"],
  ["LEVENSHTEIN"],
  [],
  [],
  [],
  [],
  ["LIST"],
  [],
  ["LN"],
  [],
  ["LOCALTIME"],
  ["LOCALTIMESTAMP"],
  [],
  [],
  [],
  [],
  [],
  ["LOG"],
  [],
  ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"],
  ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"],
  [],
  ["LOWER", "LCASE"],
  ["LOWER_HEX"],
  ["MD5"],
  ["MD5_DIGEST"],
  ["M_D5_NUMBER_LOWER64"],
  ["M_D5_NUMBER_UPPER64"],
  ["M_L_FORECAST"],
  ["M_L_TRANSLATE"],
  [],
  [],
  ["MAKE_INTERVAL"],
  ["MANHATTAN_DISTANCE"],
  ["MAP"],
  ["MAP_CAT"],
  ["MAP_CONTAINS_KEY"],
  ["MAP_DELETE"],
  ["MAP_FROM_ENTRIES"],
  ["MAP_INSERT"],
  ["MAP_KEYS"],
  ["MAP_PICK"],
  ["MAP_SIZE"],
  [],
  [],
  [],
  ["MATCH_AGAINST"],
  [],
  [],
  [],
  ["MAX"],
  ["MEDIAN"],
  [],
  [],
  [],
  [],
  ["MIN"],
  ["MINHASH"],
  ["MINHASH_COMBINE"],
  ["MINUTE"],
  [],
  ["MODE"],
  [],
  [],
  [],
  ["MONTH"],
  ["MONTHNAME"],
  ["MONTHS_BETWEEN"],
  [],
  [],
  [],
  ["NANVL"],
  [],
  [],
  ["NEGATIVE"],
  [],
  ["NET_FUNC"],
  [],
  ["NEXT_DAY"],
  ["NEXT_VALUE_FOR"],
  [],
  [],
  ["NORMAL"],
  ["NORMALIZE"],
  [],
  [],
  [],
  ["NTH_VALUE"],
  ["NTILE"],
  [],
  [],
  [],
  ["NULLIF"],
  ["NUMBER_TO_STR"],
  ["NVL2"],
  ["OBJECT_AGG"],
  ["OBJECT_ID"],
  [],
  ["OBJECT_INSERT"],
  ["OBJECT_TRANSFORM"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["OPEN_J_S_O_N"],
  [],
  [],
  ["OR"],
  [],
  [],
  [],
  [],
  [],
  ["OVERLAY"],
  ["PAD"],
  [],
  [],
  ["PARAMETERIZED_AGG"],
  [],
  ["PARSE_BIGNUMERIC"],
  ["PARSE_DATETIME"],
  ["PARSE_IP"],
  ["PARSE_JSON", "JSON_PARSE"],
  ["PARSE_NUMERIC"],
  ["PARSE_TIME"],
  ["PARSE_URL"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["PERCENT_RANK"],
  ["PERCENTILE_CONT"],
  ["PERCENTILE_DISC"],
  [],
  ["PI"],
  [],
  [],
  [],
  [],
  ["POSEXPLODE"],
  ["POSEXPLODE_OUTER"],
  [],
  ["POWER", "POW"],
  [],
  [],
  [],
  ["PREDICT"],
  ["PREVIOUS_DAY"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["QUANTILE"],
  ["QUARTER"],
  [],
  [],
  [],
  [],
  ["RADIANS"],
  ["RAND", "RANDOM"],
  ["RANDN"],
  ["RANDSTR"],
  ["RANGE_BUCKET"],
  ["RANGE_N"],
  ["RANK"],
  [],
  ["READ_CSV"],
  ["READ_PARQUET"],
  [],
  ["REDUCE"],
  [],
  [],
  [],
  ["REG_DOMAIN"],
  ["REGEXP_COUNT"],
  ["REGEXP_EXTRACT"],
  ["REGEXP_EXTRACT_ALL"],
  ["REGEXP_FULL_MATCH"],
  ["REGEXP_I_LIKE"],
  ["REGEXP_INSTR"],
  ["REGEXP_LIKE"],
  ["REGEXP_REPLACE"],
  ["REGEXP_SPLIT"],
  ["REGEXP_SUBSTR"],
  ["REGR_AVGX"],
  ["REGR_AVGY"],
  ["REGR_COUNT"],
  ["REGR_INTERCEPT"],
  ["REGR_R2"],
  ["REGR_SLOPE"],
  ["REGR_SXX"],
  ["REGR_SXY"],
  ["REGR_SYY"],
  ["REGR_VALX"],
  ["REGR_VALY"],
  [],
  [],
  [],
  ["REPEAT"],
  [],
  ["REPLACE"],
  [],
  [],
  [],
  [],
  [],
  ["REVERSE"],
  [],
  ["RIGHT"],
  ["RINT"],
  [],
  [],
  [],
  [],
  ["ROUND"],
  [],
  [],
  [],
  [],
  ["ROW_NUMBER"],
  ["RTRIMMED_LENGTH"],
  ["SHA", "SHA1"],
  ["S_H_A1_DIGEST"],
  ["SHA2"],
  ["S_H_A2_DIGEST"],
  ["SAFE_ADD"],
  ["SAFE_CONVERT_BYTES_TO_STRING"],
  ["SAFE_DIVIDE"],
  ["SAFE_FUNC"],
  ["SAFE_MULTIPLY"],
  ["SAFE_NEGATE"],
  ["SAFE_SUBTRACT"],
  [],
  [],
  [],
  [],
  ["SEARCH"],
  ["SEARCH_IP"],
  ["SEC"],
  ["SECH"],
  ["SECOND"],
  ["SECRET"],
  [],
  [],
  [],
  [],
  [],
  [],
  ["SEQ1"],
  ["SEQ2"],
  ["SEQ4"],
  ["SEQ8"],
  [],
  [],
  [],
  ["SESSION_USER"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["SHUFFLE"],
  ["SIGN", "SIGNUM"],
  [],
  ["SIN"],
  ["SINH"],
  ["SKEWNESS"],
  [],
  [],
  [],
  ["SORT_ARRAY"],
  [],
  ["SOUNDEX"],
  ["SOUNDEX_P123"],
  ["SPACE"],
  ["SPLIT"],
  ["SPLIT_PART"],
  [],
  [],
  ["SQRT"],
  ["ST_DISTANCE"],
  ["ST_POINT", "ST_MAKEPOINT"],
  [],
  ["STACK"],
  ["STANDARD_HASH"],
  [],
  ["STAR_MAP"],
  ["STARTS_WITH", "STARTSWITH"],
  ["STDDEV", "STDEV"],
  ["STDDEV_POP"],
  ["STDDEV_SAMP"],
  [],
  [],
  ["STR_POSITION"],
  ["STR_TO_DATE"],
  ["STR_TO_MAP"],
  ["STR_TO_TIME"],
  ["STR_TO_UNIX"],
  [],
  [],
  [],
  ["STRING"],
  ["STRING_TO_ARRAY", "SPLIT_BY_STRING"],
  ["STRIP_NULL_VALUE"],
  ["STRTOK"],
  ["STRTOK_TO_ARRAY"],
  ["STRUCT"],
  ["STRUCT_EXTRACT"],
  ["STUFF", "INSERT"],
  [],
  [],
  [],
  ["SUBSTRING", "SUBSTR"],
  ["SUBSTRING_INDEX"],
  ["SUM"],
  [],
  [],
  ["SYSTIMESTAMP"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["TAN"],
  ["TANH"],
  [],
  ["TIME"],
  ["TIME_ADD"],
  ["TIME_DIFF"],
  ["TIME_FROM_PARTS", "TIMEFROMPARTS"],
  ["TIME_SLICE"],
  ["TIME_STR_TO_DATE"],
  ["TIME_STR_TO_TIME"],
  ["TIME_STR_TO_UNIX"],
  ["TIME_SUB"],
  ["TIME_TO_STR"],
  ["TIME_TO_TIME_STR"],
  ["TIME_TO_UNIX"],
  ["TIME_TRUNC"],
  [],
  [],
  ["TIMESTAMP"],
  ["TIMESTAMP_ADD"],
  ["TIMESTAMPDIFF", "TIMESTAMP_DIFF"],
  ["TIMESTAMP_FROM_PARTS", "TIMESTAMPFROMPARTS"],
  ["TIMESTAMP_LTZ_FROM_PARTS", "TIMESTAMPLTZFROMPARTS"],
  ["TIMESTAMP_SUB"],
  ["TIMESTAMP_TRUNC"],
  ["TIMESTAMP_TZ_FROM_PARTS", "TIMESTAMPTZFROMPARTS"],
  [],
  ["TO_ARRAY"],
  ["TO_BASE32"],
  ["TO_BASE64"],
  ["TO_BINARY"],
  ["TO_BOOLEAN"],
  ["TO_CHAR"],
  ["TO_CODE_POINTS"],
  ["TO_DAYS"],
  ["TO_DECFLOAT"],
  ["TO_DOUBLE"],
  ["TO_FILE"],
  ["TO_MAP"],
  ["TO_NUMBER"],
  [],
  ["TO_VARIANT"],
  [],
  ["TRANSFORM"],
  [],
  [],
  ["TRANSLATE"],
  [],
  [],
  [],
  [],
  [],
  ["TRIM"],
  ["TRUNC", "TRUNCATE"],
  [],
  ["TRY"],
  ["TRY_BASE64_DECODE_BINARY"],
  ["TRY_BASE64_DECODE_STRING"],
  ["TRY_CAST"],
  ["TRY_HEX_DECODE_BINARY"],
  ["TRY_HEX_DECODE_STRING"],
  ["TRY_TO_DECFLOAT"],
  ["TS_OR_DI_TO_DI"],
  ["TS_OR_DS_ADD"],
  ["TS_OR_DS_DIFF"],
  ["TS_OR_DS_TO_DATE"],
  ["TS_OR_DS_TO_DATE_STR"],
  ["TS_OR_DS_TO_DATETIME"],
  ["TS_OR_DS_TO_TIME"],
  ["TS_OR_DS_TO_TIMESTAMP"],
  [],
  ["TYPEOF"],
  [],
  [],
  [],
  [],
  ["UNHEX"],
  ["UNICODE"],
  [],
  ["UNIFORM"],
  [],
  [],
  [],
  ["UNIX_DATE"],
  ["UNIX_MICROS"],
  ["UNIX_MILLIS"],
  ["UNIX_SECONDS"],
  ["UNIX_TO_STR"],
  ["UNIX_TO_TIME"],
  ["UNIX_TO_TIME_STR"],
  [],
  ["UNNEST"],
  [],
  [],
  ["UPPER", "UCASE"],
  [],
  [],
  [],
  [],
  [],
  [],
  ["UTC_DATE"],
  ["UTC_TIME"],
  ["UTC_TIMESTAMP"],
  ["UUID", "GEN_RANDOM_UUID", "GENERATE_UUID", "UUID_STRING"],
  [],
  [],
  [],
  ["VAR_MAP"],
  [],
  ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"],
  ["VARIANCE_POP", "VAR_POP"],
  ["VECTOR_SEARCH"],
  [],
  [],
  [],
  [],
  [],
  ["WEEK"],
  ["WEEK_OF_YEAR", "WEEKOFYEAR"],
  ["WEEK_START"],
  [],
  [],
  [],
  [],
  ["WIDTH_BUCKET"],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  [],
  ["XMLELEMENT"],
  ["XMLGET"],
  [],
  [],
  ["X_M_L_TABLE"],
  ["XOR"],
  ["YEAR"],
  ["YEAR_OF_WEEK", "YEAROFWEEK"],
  ["YEAR_OF_WEEK_ISO", "YEAROFWEEKISO"],
  [],
  ["ZIPF"],
  ["EXPLODE_OUTER"],
  [],
]

///|
let kind_owner_name : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  320, -1, -1, -1, -1, -1, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, 346, -1, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 642, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, 666, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 704, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 862, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 895, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `name` (None for the base `Expression`).
pub fn Kind::owner_name(self : Kind) -> Kind? {
  let o = kind_owner_name[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_output_name : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, 18, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 439,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, 496, -1, -1, 499,
  -1, -1, -1, -1, -1, -1, 506, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  560, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 675, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 862, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 887, -1, -1, -1, -1, -1, -1, -1, -1, -1, 897, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `output_name` (None for the base `Expression`).
pub fn Kind::owner_output_name(self : Kind) -> Kind? {
  let o = kind_owner_output_name[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_selects : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 259,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1, 974, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, 974, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 974, -1, -1, -1, 259, -1, -1,
  -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 544, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 974, 974, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 818, 819,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  974, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 303, -1, -1, -1, -1, -1, -1, -1, 895, -1, -1, 974, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 974, -1, -1, -1, -1, -1,
  -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 993, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, 974, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 974, -1,
]

///|
/// The class in the MRO of `self` that defines `selects` (None for the base `Expression`).
pub fn Kind::owner_selects(self : Kind) -> Kind? {
  let o = kind_owner_selects[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_named_selects : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 259,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, 259, -1, -1,
  -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 819, 819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 818, 819,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, 895, -1, -1, 819, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1,
  -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 819, -1,
]

///|
/// The class in the MRO of `self` that defines `named_selects` (None for the base `Expression`).
pub fn Kind::owner_named_selects(self : Kind) -> Kind? {
  let o = kind_owner_named_selects[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_is_star : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 818, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 887, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `is_star` (None for the base `Expression`).
pub fn Kind::owner_is_star(self : Kind) -> Kind? {
  let o = kind_owner_is_star[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_to_py : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  560, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, 626, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 642, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `to_py` (None for the base `Expression`).
pub fn Kind::owner_to_py(self : Kind) -> Kind? {
  let o = kind_owner_to_py[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_unnest : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 887, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `unnest` (None for the base `Expression`).
pub fn Kind::owner_unnest(self : Kind) -> Kind? {
  let o = kind_owner_unnest[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_alias_or_name : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 527, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `alias_or_name` (None for the base `Expression`).
pub fn Kind::owner_alias_or_name(self : Kind) -> Kind? {
  let o = kind_owner_alias_or_name[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_this : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `this` (None for the base `Expression`).
pub fn Kind::owner_this(self : Kind) -> Kind? {
  let o = kind_owner_this[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_is_type : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 264, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 264, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 264, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 264, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `is_type` (None for the base `Expression`).
pub fn Kind::owner_is_type(self : Kind) -> Kind? {
  let o = kind_owner_is_type[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_unit : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, 918, 918, 918, -1, -1, -1, -1, 918, -1, -1, 278, -1,
  918, 918, 918, 918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 918, 918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, 918, 918, -1, 918, -1, -1, -1, 918, -1, -1, -1, 918, 918, -1,
  -1, 918, 918, -1, -1, 918, 918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 918, 918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 918,
]

///|
/// The class in the MRO of `self` that defines `unit` (None for the base `Expression`).
pub fn Kind::owner_unit(self : Kind) -> Kind? {
  let o = kind_owner_unit[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_ctes : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 259,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 259, -1, -1,
  -1, 728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, 728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 728, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 728, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `ctes` (None for the base `Expression`).
pub fn Kind::owner_ctes(self : Kind) -> Kind? {
  let o = kind_owner_ctes[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_parts : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 895, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `parts` (None for the base `Expression`).
pub fn Kind::owner_parts(self : Kind) -> Kind? {
  let o = kind_owner_parts[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_alias : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `alias` (None for the base `Expression`).
pub fn Kind::owner_alias(self : Kind) -> Kind? {
  let o = kind_owner_alias[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_kind : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 182, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 182, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 527, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 977, -1, -1,
  -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, 182, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `kind` (None for the base `Expression`).
pub fn Kind::owner_kind(self : Kind) -> Kind? {
  let o = kind_owner_kind[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_side : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 527, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `side` (None for the base `Expression`).
pub fn Kind::owner_side(self : Kind) -> Kind? {
  let o = kind_owner_side[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_method : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, 527, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `method` (None for the base `Expression`).
pub fn Kind::owner_method(self : Kind) -> Kind? {
  let o = kind_owner_method[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_db : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 895, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `db` (None for the base `Expression`).
pub fn Kind::owner_db(self : Kind) -> Kind? {
  let o = kind_owner_db[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_catalog : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 895, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `catalog` (None for the base `Expression`).
pub fn Kind::owner_catalog(self : Kind) -> Kind? {
  let o = kind_owner_catalog[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_table : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 995, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `table` (None for the base `Expression`).
pub fn Kind::owner_table(self : Kind) -> Kind? {
  let o = kind_owner_table[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_columns : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 896, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `columns` (None for the base `Expression`).
pub fn Kind::owner_columns(self : Kind) -> Kind? {
  let o = kind_owner_columns[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_left : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 117, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, 117, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 117, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, 117, -1, -1, 117, -1, 117, -1, 117, 117, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, -1, -1, -1, 117,
  117, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 117, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  117, 833, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  117, -1, 117, 117, 117, 117, 117, -1, 117, 117, -1, 117, -1, -1, -1, -1, 117, -1, -1, 117,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1,
  -1, 117, -1, 117, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 117, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 117, 117, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, -1, 117, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
  117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `left` (None for the base `Expression`).
pub fn Kind::owner_left(self : Kind) -> Kind? {
  let o = kind_owner_left[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_right : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, 117, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, 117, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 117, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, 117, -1, -1, 117, -1, 117, -1, 117, 117, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, -1, -1, -1, 117,
  117, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 117, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  117, 833, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  117, -1, 117, 117, 117, 117, 117, -1, 117, 117, -1, 117, -1, -1, -1, -1, 117, -1, -1, 117,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, 117, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1,
  -1, 117, -1, 117, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 117, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, 117, 117, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 117, -1, 117, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
  117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, 833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `right` (None for the base `Expression`).
pub fn Kind::owner_right(self : Kind) -> Kind? {
  let o = kind_owner_right[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_is_number : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `is_number` (None for the base `Expression`).
pub fn Kind::owner_is_number(self : Kind) -> Kind? {
  let o = kind_owner_is_number[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_is_string : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `is_string` (None for the base `Expression`).
pub fn Kind::owner_is_string(self : Kind) -> Kind? {
  let o = kind_owner_is_string[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_is_int : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `is_int` (None for the base `Expression`).
pub fn Kind::owner_is_int(self : Kind) -> Kind? {
  let o = kind_owner_is_int[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}

///|
let kind_owner_to : FixedArray[Int] = [
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
]

///|
/// The class in the MRO of `self` that defines `to` (None for the base `Expression`).
pub fn Kind::owner_to(self : Kind) -> Kind? {
  let o = kind_owner_to[self.id()]
  if o < 0 {
    None
  } else {
    Some(all_kinds[o])
  }
}