(AndOr
  ops: [Op_DAmp]
  children: [
    (FuncDef
      name: _rcs
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:cur) op:Equal spids:[13])
                (assign_pair lhs:(LhsName name:prev) op:Equal spids:[15])
                (assign_pair lhs:(LhsName name:words) op:Equal spids:[17])
                (assign_pair lhs:(LhsName name:cword) op:Equal spids:[19])
              ]
              spids: [11]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(_init_completion)}) (ControlFlow token:<ControlFlow_Return return>)]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:file) op:Equal spids:[32])
                (assign_pair lhs:(LhsName name:dir) op:Equal spids:[34])
                (assign_pair lhs:(LhsName name:i) op:Equal spids:[36])
              ]
              spids: [30]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name cur>
                        suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)})
                        spids: [41 46]
                      )
                    }
                  spids: [40]
                )
              ]
              spids: [40]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name cur>
                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
                        spids: [50 55]
                      )
                    }
                  spids: [49]
                )
              ]
              spids: [49]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {($ VSub_Name '$file')}
                      right: {($ VSub_Name '$dir')}
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:dir) op:Equal rhs:{(.)} spids:[75])]
                  spids: [75]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:COMPREPLY)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(compgen)} {(-f)} {(--)} 
                                      {(DQ ($ VSub_Name '$dir') (/RCS/) ($ VSub_Name '$file'))}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [83 97]
                            )
                          }
                        ]
                      )
                    }
                  spids: [80]
                )
              ]
              spids: [80]
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:i)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name COMPREPLY>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [116 122]
                          )
                        }
                    )
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:file)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name COMPREPLY>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_DPound
                                    arg_word: {('*') (Lit_Slash /)}
                                  )
                                spids: [136 144]
                              )
                            }
                          spids: [135]
                        )
                      ]
                      spids: [135]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dir)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name COMPREPLY>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_Percent
                                    arg_word: {(RCS) (Lit_Slash /) ('*')}
                                  )
                                spids: [148 157]
                              )
                            }
                          spids: [147]
                        )
                      ]
                      spids: [147]
                    )
                    (C 
                      {(COMPREPLY) (Lit_Other '[') ($ VSub_Name '$i') (Lit_Other ']') (Lit_Other '=') 
                        ($ VSub_Name '$dir') ($ VSub_Name '$file')
                      }
                    )
                  ]
                  spids: [132 169]
                )
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:COMPREPLY)
                  op: PlusEqual
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(compgen)} {(-G)} 
                                      {(DQ ($ VSub_Name '$dir') (/) ($ VSub_Name '$file') ('*,v'))}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [176 189]
                            )
                          }
                        ]
                      )
                    }
                  spids: [173]
                )
              ]
              spids: [173]
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithVarRef name:i)
                  right: 
                    (ArithWord
                      w: 
                        {
                          (BracedVarSub
                            token: <VSub_Name COMPREPLY>
                            prefix_op: VSub_Pound
                            bracket_op: (WholeArray op_id:Lit_At)
                            spids: [208 214]
                          )
                        }
                    )
                )
              update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))
              body: 
                (DoGroup
                  children: [
                    (C 
                      {(COMPREPLY) (Lit_Other '[') ($ VSub_Name '$i') (Lit_Other ']') (Lit_Other '=') 
                        (BracedVarSub
                          token: <VSub_Name COMPREPLY>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')}))
                          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(',v')})
                          spids: [232 239]
                        )
                      }
                    )
                  ]
                  spids: [224 242]
                )
            )
            (AndOr
              ops: [Op_DAmp Op_DPipe]
              children: [
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_eq
                          left: 
                            {
                              (BracedVarSub
                                token: <VSub_Name COMPREPLY>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [256 262]
                              )
                            }
                          right: {(0)}
                        )
                      right: 
                        (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)})
  ]
)