(command.AndOr
  ops: [Op_DAmp]
  children: [
    (command.FuncDef
      name: _rcs
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:cur spids:[13])
                  op: Equal
                  spids: [13]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:prev spids:[15])
                  op: Equal
                  spids: [15]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:words spids:[17])
                  op: Equal
                  spids: [17]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:cword spids:[19])
                  op: Equal
                  spids: [19]
                )
              ]
              spids: [11]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(_init_completion)})
                (command.ControlFlow token:<ControlFlow_Return return>)
              ]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:file spids:[32])
                  op: Equal
                  spids: [32]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dir spids:[34])
                  op: Equal
                  spids: [34]
                )
                (assign_pair
                  lhs: (lhs_expr.LhsName name:i spids:[36])
                  op: Equal
                  spids: [36]
                )
              ]
              spids: [30]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:file spids:[40])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name cur>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VOp1_DPound
                            arg_word: {('*') (Lit_Slash /)}
                          )
                        spids: [41 46]
                      )
                    }
                  spids: [40]
                )
              ]
              spids: [40]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dir spids:[49])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Name cur>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VOp1_Percent
                            arg_word: {(Lit_Slash /) ('*')}
                          )
                        spids: [50 55]
                      )
                    }
                  spids: [49]
                )
              ]
              spids: [49]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {($ VSub_DollarName '$file')}
                      right: {($ VSub_DollarName '$dir')}
                    )
                )
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:dir spids:[75])
                      op: Equal
                      rhs: {(.)}
                      spids: [75]
                    )
                  ]
                  spids: [75]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[80])
                  op: Equal
                  rhs: 
                    {
                      (word_part.ArrayLiteralPart
                        words: [
                          {
                            (word_part.CommandSubPart
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-f)} {(--)} 
                                      {
                                        (DQ ($ VSub_DollarName '$dir') (/RCS/) 
                                          ($ VSub_DollarName '$file')
                                        )
                                      }
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [83 97]
                            )
                          }
                        ]
                      )
                    }
                  spids: [80]
                )
              ]
              spids: [80]
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Arith_Equal
                  left: (lhs_expr.LhsName name:i spids:[107])
                  right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (arith_expr.ArithBinary
                  op_id: Arith_Less
                  left: (arith_expr.ArithVarRef token:<Lit_ArithVarLike i>)
                  right: 
                    (arith_expr.ArithWord
                      w: 
                        {
                          (word_part.BracedVarSub
                            token: <VSub_Name COMPREPLY>
                            prefix_op: VSub_Pound
                            bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                            spids: [116 122]
                          )
                        }
                    )
                )
              update: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDPlus
                  child: (lhs_expr.LhsName name:i spids:[125])
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:file spids:[135])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name COMPREPLY>
                                bracket_op: 
                                  (bracket_op.ArrayIndex
                                    expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                  )
                                suffix_op: 
                                  (suffix_op.StringUnary
                                    op_id: VOp1_DPound
                                    arg_word: {('*') (Lit_Slash /)}
                                  )
                                spids: [136 144]
                              )
                            }
                          spids: [135]
                        )
                      ]
                      spids: [135]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:dir spids:[147])
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name COMPREPLY>
                                bracket_op: 
                                  (bracket_op.ArrayIndex
                                    expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                  )
                                suffix_op: 
                                  (suffix_op.StringUnary
                                    op_id: VOp1_Percent
                                    arg_word: {(RCS) (Lit_Slash /) ('*')}
                                  )
                                spids: [148 157]
                              )
                            }
                          spids: [147]
                        )
                      ]
                      spids: [147]
                    )
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: 
                            (lhs_expr.LhsIndexedName
                              name: COMPREPLY
                              index: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                              spids: [160]
                            )
                          op: Equal
                          rhs: {($ VSub_DollarName '$dir') ($ VSub_DollarName '$file')}
                          spids: [160]
                        )
                      ]
                      spids: [160]
                    )
                  ]
                  spids: [132 167]
                )
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:COMPREPLY spids:[171])
                  op: PlusEqual
                  rhs: 
                    {
                      (word_part.ArrayLiteralPart
                        words: [
                          {
                            (word_part.CommandSubPart
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(compgen)} {(-G)} 
                                      {
                                        (DQ ($ VSub_DollarName '$dir') (/) ($ VSub_DollarName '$file') 
                                          ('*,v')
                                        )
                                      }
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [174 187]
                            )
                          }
                        ]
                      )
                    }
                  spids: [171]
                )
              ]
              spids: [171]
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Arith_Equal
                  left: (lhs_expr.LhsName name:i spids:[197])
                  right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (arith_expr.ArithBinary
                  op_id: Arith_Less
                  left: (arith_expr.ArithVarRef token:<Lit_ArithVarLike i>)
                  right: 
                    (arith_expr.ArithWord
                      w: 
                        {
                          (word_part.BracedVarSub
                            token: <VSub_Name COMPREPLY>
                            prefix_op: VSub_Pound
                            bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                            spids: [206 212]
                          )
                        }
                    )
                )
              update: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDPlus
                  child: (lhs_expr.LhsName name:i spids:[215])
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: 
                            (lhs_expr.LhsIndexedName
                              name: COMPREPLY
                              index: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                              spids: [225]
                            )
                          op: Equal
                          rhs: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name COMPREPLY>
                                bracket_op: 
                                  (bracket_op.ArrayIndex
                                    expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                  )
                                suffix_op: (suffix_op.StringUnary op_id:VOp1_Percent arg_word:{(',v')})
                                spids: [228 235]
                              )
                            }
                          spids: [225]
                        )
                      ]
                      spids: [225]
                    )
                  ]
                  spids: [222 238]
                )
            )
            (command.AndOr
              ops: [Op_DAmp Op_DPipe]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.LogicalAnd
                      left: 
                        (bool_expr.BoolBinary
                          op_id: BoolBinary_eq
                          left: 
                            {
                              (word_part.BracedVarSub
                                token: <VSub_Name COMPREPLY>
                                prefix_op: VSub_Pound
                                bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                                spids: [252 258]
                              )
                            }
                          right: {(0)}
                        )
                      right: 
                        (bool_expr.BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {($ VSub_Number '$1')}
                          right: {(ci)}
                        )
                    )
                )
                (C {(_filedir)})
                (C {(_filedir)} {(-d)})
              ]
            )
          ]
          spids: [8]
        )
      spids: [4 7]
    )
    (C {(complete)} {(-F)} {(_rcs)} {(ci)} {(co)} {(rlog)} {(rcs)} {(rcsdiff)})
  ]
)