(command.AndOr
  ops: [Id.Op_DAmp]
  children: [
    (command.ShFunction
      name: _cppcheck
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(cur)} {(prev)} {(words)} {(cword)} {(split)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(_init_completion)} {(-s)})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:30)
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$prev')}
              arms: [
                (case_arm
                  pat_list: [
                    {(--append)}
                    {(--exitcode-suppressions)}
                    {(--rule-file)}
                    {(--config-excludes-file)}
                    {(--suppressions-list)}
                    {(--includes-file)}
                    {(--include)}
                    {(-i)}
                  ]
                  action: [
                    (C {(_filedir)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:64)
                    )
                  ]
                  spids: [41 58 67 -1]
                )
                (case_arm
                  pat_list: [
                    {(-D)}
                    {(-U)}
                    {(--rule)}
                    {(--suppress)}
                    {(--template)}
                    {(--max-configs)}
                    {(-h)}
                    {(--help)}
                    {(--version)}
                    {(--errorlist)}
                    {(--config-exclude)}
                    {(-l)}
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:98)
                    )
                  ]
                  spids: [70 95 101 -1]
                )
                (case_arm
                  pat_list: [{(--enable)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:split)
                          op: assign_op.Equal
                          rhs: {(false)}
                          spids: [112]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ ($ Id.VSub_DollarName '$cur'))}
                                      right: 
                                        {(Id.Lit_Other '?') (Id.Lit_Other '*') (Id.Lit_Other ',') 
                                          (Id.Lit_Other '*')
                                        }
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:132)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:prev)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:cur span_id:140)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VOp1_Percent
                                              arg_word: {(',*')}
                                            )
                                        )
                                      )
                                    }
                                  spids: [137]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cur)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:cur span_id:150)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VOp1_DPound
                                              arg_word: {('*,')}
                                            )
                                        )
                                      )
                                    }
                                  spids: [147]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:split)
                                  op: assign_op.Equal
                                  rhs: {(true)}
                                  spids: [157]
                                )
                              ]
                            )
                          ]
                          spids: [116 134]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:165)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:167)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'all warning style performance\n'
                                                    span_id: 174
                                                  ) 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 
'                portability information unusedFunction missingInclude'
                                                    span_id: 175
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [164]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {($ Id.VSub_DollarName '$split')})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:196)
                                    words: [
                                      {
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:COMPREPLY span_id:199)
                                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                          suffix_op: 
                                            (suffix_op.PatSub
                                              pat: {}
                                              replace: {(DQ ($ Id.VSub_DollarName '$prev') (','))}
                                              replace_mode: Id.Lit_Pound
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [195]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:215)
                    )
                  ]
                  spids: [104 105 218 -1]
                )
                (case_arm
                  pat_list: [{(--error-exitcode)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:226)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:228)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: '{0..255}'
                                                    span_id: 235
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [225]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:249)
                    )
                  ]
                  spids: [221 222 252 -1]
                )
                (case_arm
                  pat_list: [{(--file-list)}]
                  action: [
                    (C {(_filedir)})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.LogicalOr
                              left: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName '$cur')}
                                )
                              right: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName '$cur')}
                                  right: {(-)}
                                )
                            )
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.PlusEqual
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: (Token id:Id.Op_LParen val:'(' span_id:281)
                                    words: [{(-)}]
                                  )
                                }
                              spids: [280]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:288)
                    )
                  ]
                  spids: [255 256 291 -1]
                )
                (case_arm
                  pat_list: [{(-I)}]
                  action: [
                    (C {(_filedir)} {(-d)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:303)
                    )
                  ]
                  spids: [294 295 306 -1]
                )
                (case_arm
                  pat_list: [{(-j)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:314)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:316)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (DQ ('{2..') 
                                                  (command_sub
                                                    left_token: 
                                                      (Token
                                                        id: Id.Left_DollarParen
                                                        val: '$('
                                                        span_id: 324
                                                      )
                                                    command_list: 
                                                      (command.CommandList
                                                        children: [(C {(_ncpus)})]
                                                      )
                                                  ) ('}')
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [313]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:341)
                    )
                  ]
                  spids: [309 310 344 -1]
                )
                (case_arm
                  pat_list: [{(--language)} {(-x)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:354)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:356)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {(SQ (Token id:Id.Lit_Chars val:'c c++' span_id:363))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [353]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:377)
                    )
                  ]
                  spids: [347 350 380 -1]
                )
                (case_arm
                  pat_list: [{(--std)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:388)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:390)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'c89 c99 c11 c++03 c++11 posix'
                                                    span_id: 397
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [387]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:413)
                    )
                  ]
                  spids: [383 384 416 -1]
                )
                (case_arm
                  pat_list: [{(--platform)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:424)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:426)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 'unix32 unix64 win32A win32W win64\n'
                                                    span_id: 433
                                                  ) (Token id:Id.Lit_Chars val:'                native' span_id:434)
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [423]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:448)
                    )
                  ]
                  spids: [419 420 451 -1]
                )
                (case_arm
                  pat_list: [{(-rp)} {(--relative-paths)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {($ Id.VSub_DollarName '$split')})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:463)
                            )
                          ]
                          action: [
                            (C {(_filedir)} {(-d)})
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:476)
                            )
                          ]
                          spids: [460 465]
                        )
                      ]
                    )
                  ]
                  spids: [454 457 482 -1]
                )
                (case_arm
                  pat_list: [{(--library)}]
                  action: [
                    (C {(_filedir)} {(cfg)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:494)
                    )
                  ]
                  spids: [485 486 497 -1]
                )
                (case_arm
                  pat_list: [{(--xml-version)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:505)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:507)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {(SQ (Token id:Id.Lit_Chars val:'1 2' span_id:514))} {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [504]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:528)
                    )
                  ]
                  spids: [500 501 531 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {($ Id.VSub_DollarName '$split')})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:542)
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_DollarName '$cur')}
                              right: {(-) (Id.Lit_Other '*')}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:558)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: (Token id:Id.Op_LParen val:'(' span_id:564)
                                words: [
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:566)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(compgen)} {(-W)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: '$( _parse_help "$1" )'
                                                    span_id: 573
                                                  )
                                                )
                                              } {(--)} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                          ]
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [563]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_DollarName '$COMPREPLY')}
                              right: {(Id.Lit_Other '*') (Id.BoolBinary_GlobEqual '=')}
                            )
                        )
                        (C {(compopt)} {(-o)} {(nospace)})
                      ]
                    )
                  ]
                  spids: [546 560]
                )
              ]
              else_action: [
                (C {(_filedir)} 
                  {(SQ (Token id:Id.Lit_Chars val:'@([cht]pp|[cht]xx|cc|[ch]++|[ch])' span_id:613))}
                )
              ]
            )
          ]
        )
    )
    (C {(complete)} {(-F)} {(_cppcheck)} {(cppcheck)})
  ]
)