(command.CommandList
  children: [
    (command.ShFunction
      name: _aspell_dictionary
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<datadir>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:datadir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.AndOr
                            ops: [Id.Op_DPipe]
                            children: [
                              (command.Simple
                                words: [{<aspell>} {<config>} {<data-dir>}]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                              (C {<echo>} {<'/usr/lib/aspell'>})
                            ]
                          )
                      )
                    }
                  spids: [16]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  words: [
                                    {<command>}
                                    {<ls>}
                                    {($ Id.VSub_DollarName '$datadir') <'/'> <Id.Lit_Star '*'> <.alias>}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [41]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (braced_var_sub
                              token: <Id.VSub_Name COMPREPLY>
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VOp1_Percent '%'>
                                  arg_word: {<.alias>}
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [63]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (braced_var_sub
                              token: <Id.VSub_Name COMPREPLY>
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              suffix_op: 
                                (suffix_op.Unary
                                  tok: <Id.VOp1_Pound '#'>
                                  arg_word: {($ Id.VSub_DollarName '$datadir') <Id.Lit_Slash '/'>}
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [78]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  words: [{<aspell>} {<dicts>}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [98]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<compgen>} {<-W>} {(SQ <'${COMPREPLY[@]}'>)} {<-->} 
                                  {(DQ ($ Id.VSub_DollarName '$cur'))}
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [115]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.ShFunction
          name: _aspell
          body: 
            (BraceGroup
              children: [
                (C {<local>} {<cur>} {<prev>} {<words>} {<cword>} {<split>})
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<_init_completion>} {<-s>})
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                )
                (command.Case
                  to_match: {($ Id.VSub_DollarName '$prev')}
                  arms: [
                    (case_arm
                      pat_list: [{<-c>} {<-p>} {<check>} {<--conf>} {<--personal>} {<--repl>} {<--per-conf>}]
                      action: [
                        (C {<_filedir>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      spids: [178 191 202 -1]
                    )
                    (case_arm
                      pat_list: [
                        {<--conf-dir>}
                        {<--data-dir>}
                        {<--dict-dir>}
                        {<--home-dir>}
                        {<--local-data-dir>}
                        {<--prefix>}
                      ]
                      action: [
                        (C {<_filedir>} {<-d>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      spids: [205 216 229 -1]
                    )
                    (case_arm
                      pat_list: [{<dump>} {<create>} {<merge>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<compgen>} {<-W>} {(SQ <'master personal repl'>)} {<-->} 
                                              {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [240]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      spids: [232 237 269 -1]
                    )
                    (case_arm
                      pat_list: [{<--mode>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<compgen>} {<-W>} 
                                              {
                                                (DQ 
                                                  (command_sub
                                                    left_token: <Id.Left_DollarParen '$('>
                                                    child: 
                                                      (command.Pipeline
                                                        children: [
                                                          (command.Simple
                                                            words: [{($ Id.VSub_Number '$1')} {<modes>}]
                                                            redirects: [
                                                              (redir
                                                                op: <Id.Redir_Great '2>'>
                                                                loc: (redir_loc.Fd fd:2)
                                                                arg: {<'/dev/null'>}
                                                              )
                                                            ]
                                                            do_fork: T
                                                          )
                                                          (C {<awk>} {(SQ <'{ print $1 }'>)})
                                                        ]
                                                        negated: F
                                                      )
                                                  )
                                                )
                                              } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [276]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      spids: [272 273 324 -1]
                    )
                    (case_arm
                      pat_list: [{<--sug-mode>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<compgen>} {<-W>} 
                                              {(SQ <'ultra fast normal bad-speller'>)} {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [331]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      spids: [327 328 362 -1]
                    )
                    (case_arm
                      pat_list: [{<--keymapping>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<compgen>} {<-W>} {(SQ <'aspell ispell'>)} {<-->} 
                                              {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [369]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      spids: [365 366 398 -1]
                    )
                    (case_arm
                      pat_list: [{<-d>} {<--master>}]
                      action: [
                        (C {<_aspell_dictionary>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      spids: [401 404 415 -1]
                    )
                    (case_arm
                      pat_list: [{<--add-filter>} {<--rem-filter>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<compgen>} {<-W>} 
                                              {
                                                (DQ 
                                                  (command_sub
                                                    left_token: <Id.Left_DollarParen '$('>
                                                    child: 
                                                      (command.Pipeline
                                                        children: [
                                                          (command.Simple
                                                            words: [
                                                              {($ Id.VSub_Number '$1')}
                                                              {<filters>}
                                                            ]
                                                            redirects: [
                                                              (redir
                                                                op: <Id.Redir_Great '2>'>
                                                                loc: (redir_loc.Fd fd:2)
                                                                arg: {<'/dev/null'>}
                                                              )
                                                            ]
                                                            do_fork: T
                                                          )
                                                          (C {<awk>} {(SQ <'{ print $1 }'>)})
                                                        ]
                                                        negated: F
                                                      )
                                                  )
                                                )
                                              } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [424]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                      spids: [418 421 472 -1]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {($ Id.VSub_DollarName '$split')})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ ($ Id.VSub_DollarName '$cur'))}
                                      right: {<-> <Id.Lit_Other '*'>}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: <Id.Op_LParen _>
                                    words: [
                                      {
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<compgen>} {<-W>} 
                                              {
                                                (SQ <'--conf= --conf-dir= --data-dir= --dict-dir=\n'> 
                                                  <
'            --encoding= --add-filter= --rem-filter= --mode= --add-extra-dicts=\n'
                                                  > <'            --rem-extra-dicts= --home-dir= --ignore= --ignore-accents\n'> 
                                                  <
'            --dont-ignore-accents --ignore-case --dont-ignore-case\n'
                                                  > <'            --ignore-repl --dont-ignore-repl --jargon --keyboard= --lang=\n'> 
                                                  <
'            --language-tag --local-data-dir= --master= --module\n'
                                                  > <'            --add-module-search-order --rem-module-search-order --per-conf=\n'> 
                                                  <
'            --personal= --prefix= --repl= --run-together --dont-run-together\n'
                                                  > <'            --run-together-limit= --run-together-min= --save-repl\n'> 
                                                  <
'            --dont-save-repl --set-prefix --dont-set-prefix --size= --spelling\n'
                                                  > <'            --strip-accents --dont-strip-accents --sug-mode=\n'> 
                                                  <
'            --add-word-list-path --rem-word-list-path --backup --dont-backup\n'
                                                  > <'            --reverse --dont-reverse --time --dont-time --keymapping=\n'> 
                                                  <
'            --add-email-quote= --rem-email-quote= --email-margin=\n'
                                                  > <'            --add-tex-command= --rem-tex-command= --tex-check-comments\n'> 
                                                  <
'            --dont-tex-check-comments --add-tex-extension --rem-tex-extension\n'
                                                  > <'            --add-sgml-check= --rem-sgml-check= --add-sgml-extension\n'> 
                                                  <'            --rem-sgml-extension'>
                                                )
                                              } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                            )
                                        )
                                      }
                                    ]
                                  )
                                }
                              spids: [508]
                            )
                          ]
                        )
                        (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: [489 505]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMPREPLY)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<compgen>} {<-W>} 
                                          {
                                            (SQ <'usage help check pipe list config soundslike\n'> 
                                              <'            filter version dump create merge'>
                                            )
                                          } {<-->} {(DQ ($ Id.VSub_DollarName '$cur'))}
                                        )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [572]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
        )
        (C {<complete>} {<-F>} {<_aspell>} {<aspell>})
      ]
    )
  ]
)