(CommandList
  children: [
    (AndOr
      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
                  children: [(C {(_init_completion)}) (ControlFlow token:<ControlFlow_Return return>)]
                  op_id: Op_DPipe
                )
                (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
                  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]
                    )
                  ]
                  op_id: Op_DAmp
                )
                (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
                  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)}
                            )
                        )
                    )
                    (AndOr
                      children: [(C {(_filedir)}) (C {(_filedir)} {(-d)})]
                      op_id: Op_DPipe
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              spids: [8]
            )
          spids: [4 7]
        )
        (C {(complete)} {(-F)} {(_rcs)} {(ci)} {(co)} {(rlog)} {(rcs)} {(rcsdiff)})
      ]
      op_id: Op_DAmp
    )
  ]
)