(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(no)} spids:[89])]
      spids: [89]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:WORKDIR) op:Equal rhs:{(work)} spids:[92])]
      spids: [92]
    )
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('Usage: fbsdid.sh [-s script] [-w workdir]'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [100]
        )
      spids: [96 99]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:COMMAND) op:Equal rhs:{(etcupdate)} spids:[120])]
      spids: [120]
    )
    (While
      cond: [(Sentence child:(C {(getopts)} {(DQ ('s:w:'))} {(option)}) terminator:<Op_Semi ';'>)]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name '$option')}
              arms: [
                (case_arm
                  pat_list: [{(s)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:COMMAND)
                          op: Equal
                          rhs: {(DQ ('sh ') ($ VSub_Name '$OPTARG'))}
                          spids: [148]
                        )
                      ]
                      spids: [148]
                    )
                  ]
                  spids: [144 145 155 16777215]
                )
                (case_arm
                  pat_list: [{(w)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:WORKDIR)
                          op: Equal
                          rhs: {($ VSub_Name '$OPTARG')}
                          spids: [162]
                        )
                      ]
                      spids: [162]
                    )
                  ]
                  spids: [158 159 166 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(echo)}) (C {(usage)})]
                  spids: [169 170 179 16777215]
                )
              ]
              spids: [137 141 182]
            )
          ]
          spids: [134 184]
        )
    )
    (C {(shift)} 
      {
        (ArithSubPart
          anode: 
            (ArithBinary
              op_id: Arith_Minus
              left: (ArithVarRef name:OPTIND)
              right: (ArithWord w:{(Lit_Digits 1)})
            )
          spids: [188 195]
        )
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-ne)} {(0)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(usage)})]
          spids: [16777215 210]
        )
      ]
      spids: [16777215 215]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CONFLICTS)
          op: Equal
          rhs: {($ VSub_Name '$WORKDIR') (/conflicts)}
          spids: [218]
        )
      ]
      spids: [218]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OLD)
          op: Equal
          rhs: {($ VSub_Name '$WORKDIR') (/old)}
          spids: [222]
        )
      ]
      spids: [222]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:NEW)
          op: Equal
          rhs: {($ VSub_Name '$WORKDIR') (/current)}
          spids: [226]
        )
      ]
      spids: [226]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TEST)
          op: Equal
          rhs: {($ VSub_Name '$WORKDIR') (/test)}
          spids: [230]
        )
      ]
      spids: [230]
    )
    (FuncDef
      name: store_id
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:file) op:Equal spids:[250])]
              spids: [248]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [254]
                )
              ]
              spids: [254]
            )
            (C {(shift)})
            (SimpleCommand
              words: [{(echo)} {(-n)} {(SQ <'# $FreeBSD'>)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$file')}
                  spids: [270]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(-n)} {(DQ ($ VSub_At '$@'))}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$file')}
                  spids: [283]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(SQ <'$'>)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$file')}
                  spids: [294]
                )
              ]
            )
          ]
          spids: [245]
        )
      spids: [241 244]
    )
    (FuncDef
      name: build_trees
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[316])]
              spids: [314]
            )
            (C {(rm)} {(-rf)} {($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')} 
              {($ VSub_Name '$CONFLICTS')}
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')})
            (C {(store_id)} {($ VSub_Name '$OLD') (/remove)})
            (C {(store_id)} {($ VSub_Name '$TEST') (/remove)} {(DQ (': head/remove 12345 jhb '))})
            (C {(store_id)} {($ VSub_Name '$OLD') (/old)} {(DQ (': src/old,v 1.1 jhb Exp '))})
            (C {(store_id)} {($ VSub_Name '$NEW') (/old)} {(DQ (': head/old 12345 jhb '))})
            (C {(store_id)} {($ VSub_Name '$TEST') (/old)} {(DQ (': head/old 12000 jhb '))})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/old)}
                          spids: [424]
                        )
                        (HereDoc
                          op_id: Redir_DLess
                          fd: 16777215
                          body: {(DQ ('\n') ('an old file\n'))}
                          do_expansion: True
                          here_end: EOF
                          was_filled: T
                          spids: [429]
                        )
                      ]
                    )
                  ]
                  spids: [419 436]
                )
              spids: [413 417]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/old)}
                  spids: [441]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('\n') ('a new file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [446]
                )
              ]
            )
            (C {(store_id)} {($ VSub_Name '$OLD') (/already)} {(DQ (': src/already,v 1.1 jhb Exp '))})
            (C {(store_id)} {($ VSub_Name '$NEW') (/already)} {(DQ (': head/already 12345 jhb '))})
            (C {(store_id)} {($ VSub_Name '$TEST') (/already)} {(DQ (': src/already,v 1.2 jhb Exp '))})
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/already)}
                  spids: [494]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('\n') ('another old file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [499]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/already)}
                          spids: [522]
                        )
                        (HereDoc
                          op_id: Redir_DLess
                          fd: 16777215
                          body: {(DQ ('\n') ('another new file\n'))}
                          do_expansion: True
                          here_end: EOF
                          was_filled: T
                          spids: [527]
                        )
                      ]
                    )
                  ]
                  spids: [517 534]
                )
              spids: [511 515]
            )
            (C {(store_id)} {($ VSub_Name '$NEW') (/add)} {(DQ (': head/add 12345 jhb '))})
            (C {(store_id)} {($ VSub_Name '$TEST') (/add)} {(DQ )})
            (C {(store_id)} {($ VSub_Name '$OLD') (/conflict)} {(DQ (': head/conflict 12000 jhb '))})
            (C {(store_id)} {($ VSub_Name '$NEW') (/conflict)} {(DQ (': head/conflict 12345 jhb '))})
            (C {(store_id)} {($ VSub_Name '$TEST') (/conflict)} {(DQ )})
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/conflict)}
                  spids: [609]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('\n') ('this is the old file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [614]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/conflict)}
                  spids: [623]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('\n') ('this is the new file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [628]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/conflict)}
                  spids: [637]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('\n') ('this is the local file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [642]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/local)}
                          spids: [684]
                        )
                        (HereDoc
                          op_id: Redir_DLess
                          fd: 16777215
                          body: {(DQ ('# Some leading text\n') ('#\n'))}
                          do_expansion: True
                          here_end: EOF
                          was_filled: T
                          spids: [689]
                        )
                      ]
                    )
                  ]
                  spids: [679 696]
                )
              spids: [671 677]
            )
            (C {(store_id)} {($ VSub_Name '$OLD') (/local)} {(DQ (': head/local 12000 jhb '))})
            (C {(store_id)} {($ VSub_Name '$NEW') (/local)} {(DQ (': head/local 12345 jhb '))})
            (C {(store_id)} {($ VSub_Name '$TEST') (/local)} {(DQ (': src/local,v 1.5 jhb Exp '))})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/local)}
                          spids: [749]
                        )
                        (HereDoc
                          op_id: Redir_DLess
                          fd: 16777215
                          body: {(DQ ('\n') ('this is a file\n'))}
                          do_expansion: True
                          here_end: EOF
                          was_filled: T
                          spids: [754]
                        )
                      ]
                    )
                  ]
                  spids: [744 761]
                )
              spids: [736 742]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/local)}
                  spids: [767]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('\n') ('these are some local mods to the file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [772]
                )
              ]
            )
            (C {(store_id)} {($ VSub_Name '$OLD') (/local-already)} {(DQ (': head/local 12000 jhb '))})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(store_id)} {($ VSub_Name '$i') (/local-already)} 
                      {(DQ (': head/local 12345 jhb '))}
                    )
                  ]
                  spids: [821 834]
                )
              spids: [815 819]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/local-already)}
                          spids: [856]
                        )
                        (HereDoc
                          op_id: Redir_DLess
                          fd: 16777215
                          body: {(DQ ('\n') ('this is a file\n'))}
                          do_expansion: True
                          here_end: EOF
                          was_filled: T
                          spids: [861]
                        )
                      ]
                    )
                  ]
                  spids: [851 868]
                )
              spids: [843 849]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/local-already)}
                  spids: [874]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('\n') ('these are some local mods to the file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [879]
                )
              ]
            )
            (C {(store_id)} {($ VSub_Name '$OLD') (/local-remove)} 
              {(DQ (': head/local-remove 12000 jhb '))}
            )
            (C {(store_id)} {($ VSub_Name '$NEW') (/local-remove)} 
              {(DQ (': head/local-remove 12345 jhb '))}
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/local-remove)}
                          spids: [931]
                        )
                        (HereDoc
                          op_id: Redir_DLess
                          fd: 16777215
                          body: {(DQ ('\n') ('this is a file\n'))}
                          do_expansion: True
                          here_end: EOF
                          was_filled: T
                          spids: [936]
                        )
                      ]
                    )
                  ]
                  spids: [926 943]
                )
              spids: [920 924]
            )
          ]
          spids: [311]
        )
      spids: [307 310]
    )
    (FuncDef
      name: missing
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-e)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} 
                          {(-o)} {(-L)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be missing'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FAILED)
                          op: Equal
                          rhs: {(yes)}
                          spids: [991]
                        )
                      ]
                      spids: [991]
                    )
                  ]
                  spids: [16777215 979]
                )
              ]
              spids: [16777215 995]
            )
          ]
          spids: [955]
        )
      spids: [951 954]
    )
    (FuncDef
      name: present
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-e)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} 
                              {(-o)} {(-L)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be present'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FAILED)
                          op: Equal
                          rhs: {(yes)}
                          spids: [1045]
                        )
                      ]
                      spids: [1045]
                    )
                  ]
                  spids: [16777215 1033]
                )
              ]
              spids: [16777215 1049]
            )
          ]
          spids: [1007]
        )
      spids: [1003 1006]
    )
    (FuncDef
      name: file
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:contents) op:Equal spids:[1072])
                (assign_pair lhs:(LhsName name:sum) op:Equal spids:[1074])
              ]
              spids: [1070]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-f)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be a regular file'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FAILED)
                          op: Equal
                          rhs: {(yes)}
                          spids: [1105]
                        )
                      ]
                      spids: [1105]
                    )
                  ]
                  spids: [16777215 1093]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(2)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:contents)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(cat)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')})
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1126 1132]
                              )
                            }
                          spids: [1125]
                        )
                      ]
                      spids: [1125]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$contents'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' has wrong contents'))})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FAILED)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [1165]
                                )
                              ]
                              spids: [1165]
                            )
                          ]
                          spids: [16777215 1153]
                        )
                      ]
                      spids: [16777215 1169]
                    )
                  ]
                  spids: [1109 1122]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(3)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:sum)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(md5)} {(-q)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')})
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1189 1197]
                              )
                            }
                          spids: [1188]
                        )
                      ]
                      spids: [1188]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$sum'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$3'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' has wrong contents'))})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FAILED)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [1230]
                                )
                              ]
                              spids: [1230]
                            )
                          ]
                          spids: [16777215 1218]
                        )
                      ]
                      spids: [16777215 1234]
                    )
                  ]
                  spids: [1172 1185]
                )
              ]
              spids: [16777215 1237]
            )
          ]
          spids: [1067]
        )
      spids: [1063 1066]
    )
    (FuncDef
      name: conflict
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:sum) op:Equal spids:[1257])]
              spids: [1255]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-f)} 
                              {($ VSub_Name '$CONFLICTS') (/) ($ VSub_Number '$1')} {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' missing conflict'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FAILED)
                          op: Equal
                          rhs: {(yes)}
                          spids: [1288]
                        )
                      ]
                      spids: [1288]
                    )
                  ]
                  spids: [16777215 1276]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(1)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:sum)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(md5)} {(-q)} 
                                        {($ VSub_Name '$CONFLICTS') (/) ($ VSub_Number '$1')}
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1309 1317]
                              )
                            }
                          spids: [1308]
                        )
                      ]
                      spids: [1308]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$sum'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {(DQ ('Conflict ') ($ VSub_Number '$1') (' has wrong contents'))}
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FAILED)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [1350]
                                )
                              ]
                              spids: [1350]
                            )
                          ]
                          spids: [16777215 1338]
                        )
                      ]
                      spids: [16777215 1354]
                    )
                  ]
                  spids: [1292 1305]
                )
              ]
              spids: [16777215 1357]
            )
          ]
          spids: [1252]
        )
      spids: [1248 1251]
    )
    (FuncDef
      name: noconflict
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-f)} 
                          {($ VSub_Name '$CONFLICTS') (/) ($ VSub_Number '$1')} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should not have a conflict'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FAILED)
                          op: Equal
                          rhs: {(yes)}
                          spids: [1397]
                        )
                      ]
                      spids: [1397]
                    )
                  ]
                  spids: [16777215 1385]
                )
              ]
              spids: [16777215 1401]
            )
          ]
          spids: [1369]
        )
      spids: [1365 1368]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} 
                  {
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(id)} {(-u)})])
                      left_token: <Left_Backtick '`'>
                      spids: [1410 1414]
                    )
                  } {(-ne)} {(0)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('must be root'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
          spids: [16777215 1423]
        )
      ]
      spids: [16777215 1437]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-r)} {(/etc/etcupdate.conf)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ ('WARNING: /etc/etcupdate.conf settings may break some tests.'))})]
          spids: [16777215 1451]
        )
      ]
      spids: [16777215 1460]
    )
    (C {(build_trees)})
    (SimpleCommand
      words: [
        {($ VSub_Name '$COMMAND')}
        {(-r)}
        {(-d)}
        {($ VSub_Name '$WORKDIR')}
        {(-D)}
        {($ VSub_Name '$TEST')}
      ]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/test.out)}
          spids: [1482]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/correct.out)}
          spids: [1490]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ('  C /already\n') ('  C /conflict\n') ('  C /local\n') ('  M /local-already\n') 
                ('  C /old\n') ('  C /add\n') ('Warnings:\n') ('  Modified regular file remains: /remove\n') 
                ('  Removed file changed: /local-remove\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [1495]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for regular:'))})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(diff)} {(-u)} {(-L)} {(DQ (correct))} {($ VSub_Name '$WORKDIR') (/correct.out)} {(-L)} 
          {(DQ (test))} {($ VSub_Name '$WORKDIR') (/test.out)}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(yes)} spids:[1541])]
          spids: [1541]
        )
      ]
    )
    (C {(file)} {(/remove)} {(DQ )} {(1bb4776213af107077be78fead8a351c)})
    (C {(file)} {(/old)} {(DQ )} {(2f799a7addc4132563ef9b44adc66157)})
    (C {(conflict)} {(/old)} {(8441be64a1540f2ff584015279682425)})
    (C {(file)} {(/already)} {(DQ )} {(aa53bd506f65d01d766e7ba028585e1d)})
    (C {(conflict)} {(/already)} {(f44105abb1fa3293e95c5d77e428d418)})
    (C {(file)} {(/add)} {(DQ )} {(1dc8c617e541d1fd1b4c70212f71d8ae)})
    (C {(conflict)} {(/add)} {(f99081e0da9a07f3cfebb430c0414941)})
    (C {(file)} {(/conflict)} {(DQ )} {(dc27978df125b0daeb7d9b93265f03fd)})
    (C {(conflict)} {(/conflict)} {(868452f666fea1c60ffb918ad9ad9607)})
    (C {(file)} {(/local)} {(DQ )} {(aa33e614b5e749449f230e2a2b0072eb)})
    (C {(conflict)} {(/local)} {(3df93e64043c8e348fc625b93ea220f4)})
    (C {(file)} {(/local-already)} {(DQ )} {(0298b958a603049f45ae6a109c4f7fea)})
    (C {(missing)} {(/local-remove)})
    (C {(build_trees)})
    (SimpleCommand
      words: [
        {($ VSub_Name '$COMMAND')}
        {(-rF)}
        {(-d)}
        {($ VSub_Name '$WORKDIR')}
        {(-D)}
        {($ VSub_Name '$TEST')}
      ]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/testF.out)}
          spids: [1662]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/correctF.out)}
          spids: [1670]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ('  D /remove\n') ('  U /already\n') ('  C /conflict\n') ('  M /local\n') 
                ('  U /old\n') ('  U /add\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [1675]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for -F:'))})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(diff)} {(-u)} {(-L)} {(DQ (correct))} {($ VSub_Name '$WORKDIR') (/correctF.out)} {(-L)} 
          {(DQ (test))} {($ VSub_Name '$WORKDIR') (/testF.out)}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(yes)} spids:[1718])]
          spids: [1718]
        )
      ]
    )
    (C {(missing)} {(/remove)})
    (C {(file)} {(/old)} {(DQ )} {(6a9f34f109d94406a4de3bc5d72de259)})
    (C {(noconflict)} {(/old)})
    (C {(file)} {(/already)} {(DQ )} {(21f4eca3aacc702c49878c8da7afd3d0)})
    (C {(noconflict)} {(/already)})
    (C {(file)} {(/add)} {(DQ )} {(0208bd647111fedf6318511712ab9e97)})
    (C {(noconflict)} {(/add)})
    (C {(file)} {(/conflict)} {(DQ )} {(dc27978df125b0daeb7d9b93265f03fd)})
    (C {(conflict)} {(/conflict)} {(868452f666fea1c60ffb918ad9ad9607)})
    (C {(file)} {(/local)} {(DQ )} {(3ed5a35e380c8a93fb5f599d4c052713)})
    (C {(file)} {(/local-already)} {(DQ )} {(0298b958a603049f45ae6a109c4f7fea)})
    (C {(missing)} {(/local-remove)})
    (C {(build_trees)})
    (SimpleCommand
      words: [
        {($ VSub_Name '$COMMAND')}
        {(-A)}
        {(SQ <'/*'>)}
        {(-rF)}
        {(-d)}
        {($ VSub_Name '$WORKDIR')}
        {(-D)}
        {($ VSub_Name '$TEST')}
      ]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/testAF.out)}
          spids: [1831]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/correctAF.out)}
          spids: [1839]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ('  D /remove\n') ('  U /already\n') ('  U /conflict\n') ('  U /local\n') 
                ('  U /local-already\n') ('  A /local-remove\n') ('  U /old\n') ('  U /add\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [1844]
        )
      ]
    )
    (C {(echo)} {(DQ ("Differences for -A '/*' -F:"))})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(diff)} {(-u)} {(-L)} {(DQ (correct))} {($ VSub_Name '$WORKDIR') (/correctAF.out)} {(-L)} 
          {(DQ (test))} {($ VSub_Name '$WORKDIR') (/testAF.out)}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(yes)} spids:[1889])]
          spids: [1889]
        )
      ]
    )
    (C {(missing)} {(/remove)})
    (C {(file)} {(/old)} {(DQ )} {(6a9f34f109d94406a4de3bc5d72de259)})
    (C {(noconflict)} {(/old)})
    (C {(file)} {(/already)} {(DQ )} {(21f4eca3aacc702c49878c8da7afd3d0)})
    (C {(noconflict)} {(/already)})
    (C {(file)} {(/add)} {(DQ )} {(0208bd647111fedf6318511712ab9e97)})
    (C {(noconflict)} {(/add)})
    (C {(file)} {(/conflict)} {(DQ )} {(75ee141c4136beaf14e39de92efa84e4)})
    (C {(noconflict)} {(/conflict)})
    (C {(file)} {(/local)} {(DQ )} {(6a8fc5c2755b7a49015089f5e1dbe092)})
    (C {(file)} {(/local-already)} {(DQ )} {(49045f8b51542dd634655301cd296f66)})
    (C {(file)} {(/local-remove)} {(DQ )} {(5c38322efed4014797d7127f5c652d9d)})
    (C {(Lit_Other '[')} {(DQ (${ VSub_Name FAILED))} {(Lit_Other '=')} {(no)} {(Lit_Other ']')})
  ]
)