use super::kind::SyntaxKind;
pub fn key_fields_range(kind: SyntaxKind) -> core::ops::Range<usize> {
match kind {
SyntaxKind::Trivia => 0..0,
SyntaxKind::ExprList => 0..0,
SyntaxKind::Arg => 0..0,
SyntaxKind::ArgClauseNamed => 0..0,
SyntaxKind::ArgClauseUnnamed => 0..0,
SyntaxKind::ArgClauseFieldInitShorthand => 0..0,
SyntaxKind::ExprFieldInitShorthand => 0..0,
SyntaxKind::ArgList => 0..0,
SyntaxKind::ExprMissing => 0..0,
SyntaxKind::PathSegmentSimple => 0..0,
SyntaxKind::OptionTerminalColonColonEmpty => 0..0,
SyntaxKind::PathSegmentWithGenericArgs => 0..0,
SyntaxKind::ExprPath => 0..0,
SyntaxKind::OptionTerminalDollarEmpty => 0..0,
SyntaxKind::PathSegmentMissing => 0..0,
SyntaxKind::ExprPathInner => 0..0,
SyntaxKind::ExprParenthesized => 0..0,
SyntaxKind::ExprUnary => 0..0,
SyntaxKind::ExprBinary => 0..0,
SyntaxKind::ExprListParenthesized => 0..0,
SyntaxKind::ExprFunctionCall => 0..0,
SyntaxKind::ArgListParenthesized => 0..0,
SyntaxKind::OptionArgListParenthesizedEmpty => 0..0,
SyntaxKind::ExprStructCtorCall => 0..0,
SyntaxKind::StructArgListBraced => 0..0,
SyntaxKind::ExprBlock => 0..0,
SyntaxKind::ExprMatch => 0..0,
SyntaxKind::MatchArms => 0..0,
SyntaxKind::MatchArm => 0..0,
SyntaxKind::ExprIf => 0..0,
SyntaxKind::ConditionListAnd => 0..0,
SyntaxKind::ConditionLet => 0..0,
SyntaxKind::ConditionExpr => 0..0,
SyntaxKind::ExprLoop => 0..0,
SyntaxKind::ExprWhile => 0..0,
SyntaxKind::ExprFor => 1..3,
SyntaxKind::ElseClause => 0..0,
SyntaxKind::OptionElseClauseEmpty => 0..0,
SyntaxKind::ExprErrorPropagate => 0..0,
SyntaxKind::ExprIndexed => 0..0,
SyntaxKind::ExprFixedSizeArray => 0..0,
SyntaxKind::FixedSizeArraySize => 0..0,
SyntaxKind::OptionFixedSizeArraySizeEmpty => 0..0,
SyntaxKind::ExprClosure => 0..0,
SyntaxKind::ClosureParams => 0..0,
SyntaxKind::StructArgExpr => 0..0,
SyntaxKind::OptionStructArgExprEmpty => 0..0,
SyntaxKind::StructArgSingle => 0..1,
SyntaxKind::StructArgTail => 0..0,
SyntaxKind::StructArgList => 0..0,
SyntaxKind::ArgListBraced => 0..0,
SyntaxKind::ArgListBracketed => 0..0,
SyntaxKind::WrappedArgListMissing => 0..0,
SyntaxKind::PatternIdentifier => 1..2,
SyntaxKind::PatternStruct => 0..0,
SyntaxKind::PatternStructParamList => 0..0,
SyntaxKind::PatternTuple => 0..0,
SyntaxKind::PatternFixedSizeArray => 0..0,
SyntaxKind::PatternList => 0..0,
SyntaxKind::PatternListOr => 0..0,
SyntaxKind::PatternStructParamWithExpr => 0..0,
SyntaxKind::PatternEnum => 0..0,
SyntaxKind::PatternEnumInnerPattern => 0..0,
SyntaxKind::OptionPatternEnumInnerPatternEmpty => 0..0,
SyntaxKind::TypeClause => 0..0,
SyntaxKind::OptionTypeClauseEmpty => 0..0,
SyntaxKind::ReturnTypeClause => 0..0,
SyntaxKind::OptionReturnTypeClauseEmpty => 0..0,
SyntaxKind::StatementList => 0..0,
SyntaxKind::StatementMissing => 0..0,
SyntaxKind::StatementLet => 2..3,
SyntaxKind::LetElseClause => 0..0,
SyntaxKind::OptionLetElseClauseEmpty => 0..0,
SyntaxKind::OptionTerminalSemicolonEmpty => 0..0,
SyntaxKind::StatementExpr => 0..0,
SyntaxKind::StatementContinue => 0..0,
SyntaxKind::ExprClause => 0..0,
SyntaxKind::OptionExprClauseEmpty => 0..0,
SyntaxKind::StatementReturn => 0..0,
SyntaxKind::StatementBreak => 0..0,
SyntaxKind::StatementItem => 0..0,
SyntaxKind::Param => 1..2,
SyntaxKind::ModifierList => 0..0,
SyntaxKind::ParamList => 0..0,
SyntaxKind::ImplicitsClause => 0..0,
SyntaxKind::ImplicitsList => 0..0,
SyntaxKind::OptionImplicitsClauseEmpty => 0..0,
SyntaxKind::OptionTerminalNoPanicEmpty => 0..0,
SyntaxKind::OptionTerminalConstEmpty => 0..0,
SyntaxKind::FunctionSignature => 0..0,
SyntaxKind::Member => 2..3,
SyntaxKind::MemberList => 0..0,
SyntaxKind::Variant => 1..2,
SyntaxKind::VariantList => 0..0,
SyntaxKind::ModuleItemList => 0..0,
SyntaxKind::ModuleItemMissing => 0..0,
SyntaxKind::Attribute => 0..0,
SyntaxKind::AttributeList => 0..0,
SyntaxKind::VisibilityDefault => 0..0,
SyntaxKind::VisibilityPubArgumentClause => 0..0,
SyntaxKind::OptionVisibilityPubArgumentClauseEmpty => 0..0,
SyntaxKind::VisibilityPub => 0..0,
SyntaxKind::ItemModule => 3..4,
SyntaxKind::ModuleBody => 0..0,
SyntaxKind::FunctionDeclaration => 2..3,
SyntaxKind::ItemConstant => 3..4,
SyntaxKind::FunctionWithBody => 2..3,
SyntaxKind::ItemExternFunction => 3..4,
SyntaxKind::ItemExternType => 4..5,
SyntaxKind::ItemTrait => 3..4,
SyntaxKind::TraitBody => 0..0,
SyntaxKind::TraitItemList => 0..0,
SyntaxKind::TraitItemMissing => 0..0,
SyntaxKind::TraitItemFunction => 1..2,
SyntaxKind::TraitItemType => 2..3,
SyntaxKind::TraitItemConstant => 2..3,
SyntaxKind::TraitItemImpl => 2..3,
SyntaxKind::ItemImpl => 3..4,
SyntaxKind::ItemHeaderDoc => 0..0,
SyntaxKind::ImplBody => 0..0,
SyntaxKind::ImplItemList => 0..0,
SyntaxKind::ImplItemMissing => 0..0,
SyntaxKind::ItemImplAlias => 3..4,
SyntaxKind::ItemStruct => 3..4,
SyntaxKind::ItemEnum => 3..4,
SyntaxKind::ItemTypeAlias => 3..4,
SyntaxKind::ItemUse => 4..5,
SyntaxKind::UsePathLeaf => 0..2,
SyntaxKind::UsePathSingle => 0..0,
SyntaxKind::UsePathMulti => 0..0,
SyntaxKind::UsePathStar => 0..0,
SyntaxKind::UsePathList => 0..0,
SyntaxKind::AliasClause => 1..2,
SyntaxKind::OptionAliasClauseEmpty => 0..0,
SyntaxKind::GenericArgNamed => 0..0,
SyntaxKind::GenericArgUnnamed => 0..0,
SyntaxKind::GenericArgs => 0..0,
SyntaxKind::GenericArgList => 0..0,
SyntaxKind::AssociatedItemConstraint => 0..0,
SyntaxKind::AssociatedItemConstraints => 0..0,
SyntaxKind::AssociatedItemConstraintList => 0..0,
SyntaxKind::OptionAssociatedItemConstraintsEmpty => 0..0,
SyntaxKind::OptionWrappedGenericParamListEmpty => 0..0,
SyntaxKind::WrappedGenericParamList => 0..0,
SyntaxKind::GenericParamList => 0..0,
SyntaxKind::GenericParamType => 0..1,
SyntaxKind::GenericParamConst => 1..2,
SyntaxKind::GenericParamImplNamed => 1..2,
SyntaxKind::GenericParamImplAnonymous => 0..0,
SyntaxKind::GenericParamNegativeImpl => 0..0,
SyntaxKind::TokenList => 0..0,
SyntaxKind::TokenTreeLeaf => 0..0,
SyntaxKind::TokenTreeNode => 0..0,
SyntaxKind::TokenTreeRepetition => 0..0,
SyntaxKind::TokenTreeParam => 0..0,
SyntaxKind::TokenTreeMissing => 0..0,
SyntaxKind::WrappedTokenTreeMissing => 0..0,
SyntaxKind::ParenthesizedTokenTree => 0..0,
SyntaxKind::BracedTokenTree => 0..0,
SyntaxKind::BracketedTokenTree => 0..0,
SyntaxKind::ExprInlineMacro => 0..0,
SyntaxKind::ItemInlineMacro => 0..0,
SyntaxKind::ItemMacroDeclaration => 3..4,
SyntaxKind::MacroRulesList => 0..0,
SyntaxKind::MacroRule => 0..0,
SyntaxKind::ParamKind => 0..0,
SyntaxKind::OptionParamKindEmpty => 0..0,
SyntaxKind::MacroParam => 0..0,
SyntaxKind::MacroRepetition => 0..0,
SyntaxKind::OptionTerminalCommaEmpty => 0..0,
SyntaxKind::MacroRepetitionOperatorMissing => 0..0,
SyntaxKind::ParamIdent => 0..0,
SyntaxKind::ParamExpr => 0..0,
SyntaxKind::MacroParamKindMissing => 0..0,
SyntaxKind::MacroElements => 0..0,
SyntaxKind::MacroWrapper => 0..0,
SyntaxKind::ParenthesizedMacro => 0..0,
SyntaxKind::BracedMacro => 0..0,
SyntaxKind::BracketedMacro => 0..0,
SyntaxKind::LegacyExprInlineMacro => 0..0,
SyntaxKind::LegacyItemInlineMacro => 0..0,
SyntaxKind::TriviumSkippedNode => 0..0,
SyntaxKind::TokenIdentifier => 0..0,
SyntaxKind::TerminalIdentifier => 0..0,
SyntaxKind::TokenLiteralNumber => 0..0,
SyntaxKind::TerminalLiteralNumber => 0..0,
SyntaxKind::TokenShortString => 0..0,
SyntaxKind::TerminalShortString => 0..0,
SyntaxKind::TokenString => 0..0,
SyntaxKind::TerminalString => 0..0,
SyntaxKind::TokenAs => 0..0,
SyntaxKind::TerminalAs => 0..0,
SyntaxKind::TokenConst => 0..0,
SyntaxKind::TerminalConst => 0..0,
SyntaxKind::TokenElse => 0..0,
SyntaxKind::TerminalElse => 0..0,
SyntaxKind::TokenEnum => 0..0,
SyntaxKind::TerminalEnum => 0..0,
SyntaxKind::TokenExtern => 0..0,
SyntaxKind::TerminalExtern => 0..0,
SyntaxKind::TokenFalse => 0..0,
SyntaxKind::TerminalFalse => 0..0,
SyntaxKind::TokenFunction => 0..0,
SyntaxKind::TerminalFunction => 0..0,
SyntaxKind::TokenIf => 0..0,
SyntaxKind::TerminalIf => 0..0,
SyntaxKind::TokenWhile => 0..0,
SyntaxKind::TerminalWhile => 0..0,
SyntaxKind::TokenFor => 0..0,
SyntaxKind::TerminalFor => 0..0,
SyntaxKind::TokenLoop => 0..0,
SyntaxKind::TerminalLoop => 0..0,
SyntaxKind::TokenImpl => 0..0,
SyntaxKind::TerminalImpl => 0..0,
SyntaxKind::TokenImplicits => 0..0,
SyntaxKind::TerminalImplicits => 0..0,
SyntaxKind::TokenLet => 0..0,
SyntaxKind::TerminalLet => 0..0,
SyntaxKind::TokenMacro => 0..0,
SyntaxKind::TerminalMacro => 0..0,
SyntaxKind::TokenMatch => 0..0,
SyntaxKind::TerminalMatch => 0..0,
SyntaxKind::TokenModule => 0..0,
SyntaxKind::TerminalModule => 0..0,
SyntaxKind::TokenMut => 0..0,
SyntaxKind::TerminalMut => 0..0,
SyntaxKind::TokenNoPanic => 0..0,
SyntaxKind::TerminalNoPanic => 0..0,
SyntaxKind::TokenOf => 0..0,
SyntaxKind::TerminalOf => 0..0,
SyntaxKind::TokenRef => 0..0,
SyntaxKind::TerminalRef => 0..0,
SyntaxKind::TokenContinue => 0..0,
SyntaxKind::TerminalContinue => 0..0,
SyntaxKind::TokenReturn => 0..0,
SyntaxKind::TerminalReturn => 0..0,
SyntaxKind::TokenBreak => 0..0,
SyntaxKind::TerminalBreak => 0..0,
SyntaxKind::TokenStruct => 0..0,
SyntaxKind::TerminalStruct => 0..0,
SyntaxKind::TokenTrait => 0..0,
SyntaxKind::TerminalTrait => 0..0,
SyntaxKind::TokenTrue => 0..0,
SyntaxKind::TerminalTrue => 0..0,
SyntaxKind::TokenType => 0..0,
SyntaxKind::TerminalType => 0..0,
SyntaxKind::TokenUse => 0..0,
SyntaxKind::TerminalUse => 0..0,
SyntaxKind::TokenPub => 0..0,
SyntaxKind::TerminalPub => 0..0,
SyntaxKind::TokenAnd => 0..0,
SyntaxKind::TerminalAnd => 0..0,
SyntaxKind::TokenAndAnd => 0..0,
SyntaxKind::TerminalAndAnd => 0..0,
SyntaxKind::TokenArrow => 0..0,
SyntaxKind::TerminalArrow => 0..0,
SyntaxKind::TokenAt => 0..0,
SyntaxKind::TerminalAt => 0..0,
SyntaxKind::TokenBadCharacters => 0..0,
SyntaxKind::TerminalBadCharacters => 0..0,
SyntaxKind::TokenColon => 0..0,
SyntaxKind::TerminalColon => 0..0,
SyntaxKind::TokenColonColon => 0..0,
SyntaxKind::TerminalColonColon => 0..0,
SyntaxKind::TokenComma => 0..0,
SyntaxKind::TerminalComma => 0..0,
SyntaxKind::TokenDiv => 0..0,
SyntaxKind::TerminalDiv => 0..0,
SyntaxKind::TokenDivEq => 0..0,
SyntaxKind::TerminalDivEq => 0..0,
SyntaxKind::TokenDollar => 0..0,
SyntaxKind::TerminalDollar => 0..0,
SyntaxKind::TokenDot => 0..0,
SyntaxKind::TerminalDot => 0..0,
SyntaxKind::TokenDotDot => 0..0,
SyntaxKind::TerminalDotDot => 0..0,
SyntaxKind::TokenDotDotEq => 0..0,
SyntaxKind::TerminalDotDotEq => 0..0,
SyntaxKind::TokenEndOfFile => 0..0,
SyntaxKind::TerminalEndOfFile => 0..0,
SyntaxKind::TokenEq => 0..0,
SyntaxKind::TerminalEq => 0..0,
SyntaxKind::TokenEqEq => 0..0,
SyntaxKind::TerminalEqEq => 0..0,
SyntaxKind::TokenGE => 0..0,
SyntaxKind::TerminalGE => 0..0,
SyntaxKind::TokenGT => 0..0,
SyntaxKind::TerminalGT => 0..0,
SyntaxKind::TokenHash => 0..0,
SyntaxKind::TerminalHash => 0..0,
SyntaxKind::TokenLBrace => 0..0,
SyntaxKind::TerminalLBrace => 0..0,
SyntaxKind::TokenLBrack => 0..0,
SyntaxKind::TerminalLBrack => 0..0,
SyntaxKind::TokenLE => 0..0,
SyntaxKind::TerminalLE => 0..0,
SyntaxKind::TokenLParen => 0..0,
SyntaxKind::TerminalLParen => 0..0,
SyntaxKind::TokenLT => 0..0,
SyntaxKind::TerminalLT => 0..0,
SyntaxKind::TokenMatchArrow => 0..0,
SyntaxKind::TerminalMatchArrow => 0..0,
SyntaxKind::TokenMinus => 0..0,
SyntaxKind::TerminalMinus => 0..0,
SyntaxKind::TokenMinusEq => 0..0,
SyntaxKind::TerminalMinusEq => 0..0,
SyntaxKind::TokenMod => 0..0,
SyntaxKind::TerminalMod => 0..0,
SyntaxKind::TokenModEq => 0..0,
SyntaxKind::TerminalModEq => 0..0,
SyntaxKind::TokenMul => 0..0,
SyntaxKind::TerminalMul => 0..0,
SyntaxKind::TokenMulEq => 0..0,
SyntaxKind::TerminalMulEq => 0..0,
SyntaxKind::TokenNeq => 0..0,
SyntaxKind::TerminalNeq => 0..0,
SyntaxKind::TokenNot => 0..0,
SyntaxKind::TerminalNot => 0..0,
SyntaxKind::TokenBitNot => 0..0,
SyntaxKind::TerminalBitNot => 0..0,
SyntaxKind::TokenOr => 0..0,
SyntaxKind::TerminalOr => 0..0,
SyntaxKind::TokenOrOr => 0..0,
SyntaxKind::TerminalOrOr => 0..0,
SyntaxKind::TokenPlus => 0..0,
SyntaxKind::TerminalPlus => 0..0,
SyntaxKind::TokenPlusEq => 0..0,
SyntaxKind::TerminalPlusEq => 0..0,
SyntaxKind::TokenQuestionMark => 0..0,
SyntaxKind::TerminalQuestionMark => 0..0,
SyntaxKind::TokenRBrace => 0..0,
SyntaxKind::TerminalRBrace => 0..0,
SyntaxKind::TokenRBrack => 0..0,
SyntaxKind::TerminalRBrack => 0..0,
SyntaxKind::TokenRParen => 0..0,
SyntaxKind::TerminalRParen => 0..0,
SyntaxKind::TokenSemicolon => 0..0,
SyntaxKind::TerminalSemicolon => 0..0,
SyntaxKind::TokenUnderscore => 0..0,
SyntaxKind::TerminalUnderscore => 0..0,
SyntaxKind::TokenXor => 0..0,
SyntaxKind::TerminalXor => 0..0,
SyntaxKind::SyntaxFile => 0..0,
SyntaxKind::TokenEmpty => 0..0,
SyntaxKind::TerminalEmpty => 0..0,
SyntaxKind::TokenSingleLineComment => 0..0,
SyntaxKind::TokenSingleLineInnerComment => 0..0,
SyntaxKind::TokenSingleLineDocComment => 0..0,
SyntaxKind::TokenWhitespace => 0..0,
SyntaxKind::TokenNewline => 0..0,
SyntaxKind::TokenMissing => 0..0,
SyntaxKind::TokenSkipped => 0..0,
}
}