(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: tests.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]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:states)
          op: Equal
          rhs: {(DQ ('equal first second difftype difflinks difffiles'))}
          spids: [238]
        )
      ]
      spids: [238]
    )
    (FuncDef
      name: build_trees
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:i) op:Equal spids:[253])
                (assign_pair lhs:(LhsName name:j) op:Equal spids:[255])
                (assign_pair lhs:(LhsName name:k) op:Equal spids:[257])
              ]
              spids: [251]
            )
            (C {(rm)} {(-rf)} {($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')} 
              {($ VSub_Name '$CONFLICTS')}
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD') (/etc)} {($ VSub_Name '$NEW') (/etc)} 
              {($ VSub_Name '$TEST') (/etc)}
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$states')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (ForEach
                      iter_name: j
                      iter_words: [{($ VSub_Name '$states')}]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (ForEach
                              iter_name: k
                              iter_words: [{($ VSub_Name '$states')}]
                              do_arg_iter: F
                              body: 
                                (DoGroup
                                  children: [
                                    (C {(mkdir)} {(-p)} 
                                      {($ VSub_Name '$OLD') (/) ($ VSub_Name '$i') (/) 
                                        ($ VSub_Name '$j') (/) ($ VSub_Name '$k')
                                      } {($ VSub_Name '$NEW') (/) ($ VSub_Name '$i') (/) ($ VSub_Name '$j') (/) ($ VSub_Name '$k')} 
                                      {($ VSub_Name '$TEST') (/) ($ VSub_Name '$i') (/) 
                                        ($ VSub_Name '$j') (/) ($ VSub_Name '$k')
                                      }
                                    )
                                  ]
                                  spids: [403 437]
                                )
                              spids: [399 401]
                            )
                          ]
                          spids: [391 440]
                        )
                      spids: [387 389]
                    )
                  ]
                  spids: [379 443]
                )
              spids: [375 377]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkfifo)} {($ VSub_Name '$i') (/equal/equal/equal/fifo)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/equal/equal/equal/file)}
                          spids: [479]
                        )
                      ]
                    )
                    (C {(mkdir)} {($ VSub_Name '$i') (/equal/equal/equal/dir)})
                    (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$i') (/equal/equal/equal/link)})
                  ]
                  spids: [464 503]
                )
              spids: [456 462]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkfifo)} {($ VSub_Name '$i') (/equal/first/first/fifo)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/equal/first/first/file)}
                          spids: [541]
                        )
                      ]
                    )
                    (C {(mkdir)} {($ VSub_Name '$i') (/equal/first/first/dir)})
                    (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$i') (/equal/first/first/link)})
                  ]
                  spids: [526 565]
                )
              spids: [520 524]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkfifo)} {($ VSub_Name '$i') (/equal/difftype/difftype/fifo)})
                    (C {(mkdir)} {($ VSub_Name '$i') (/equal/difftype/difftype/fromdir)})
                  ]
                  spids: [588 603]
                )
              spids: [582 586]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/equal/difftype/difftype/fifo)}
                  spids: [612]
                )
              ]
            )
            (C {(ln)} {(-s)} {(DQ (test))} {($ VSub_Name '$TEST') (/equal/difftype/difftype/fromdir)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(ln)} {(-s)} {(DQ (foo))} {($ VSub_Name '$i') (/equal/difflinks/difflinks/link)})
                  ]
                  spids: [650 665]
                )
              spids: [644 648]
            )
            (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$TEST') (/equal/difflinks/difflinks/link)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/equal/difffiles/difffiles/file)}
                          spids: [709]
                        )
                      ]
                    )
                  ]
                  spids: [700 715]
                )
              spids: [694 698]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/equal/difffiles/difffiles/file)}
                  spids: [724]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkfifo)} {($ VSub_Name '$i') (/first/equal/second/fifo)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/first/equal/second/file)}
                          spids: [765]
                        )
                      ]
                    )
                    (C {(mkdir)} {($ VSub_Name '$i') (/first/equal/second/emptydir)})
                    (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$i') (/first/equal/second/link)})
                    (C {(mkdir)} {($ VSub_Name '$i') (/first/equal/second/fulldir)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/first/equal/second/fulldir/file)}
                          spids: [801]
                        )
                      ]
                    )
                  ]
                  spids: [750 807]
                )
              spids: [744 748]
            )
            (C {(mkfifo)} {($ VSub_Name '$OLD') (/first/first/equal/fifo)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/first/first/equal/file)}
                  spids: [840]
                )
              ]
            )
            (C {(mkdir)} {($ VSub_Name '$OLD') (/first/first/equal/dir)})
            (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$OLD') (/first/first/equal/link)})
            (C {(mkfifo)} {($ VSub_Name '$OLD') (/first/difftype/second/fifo)})
            (C {(mkdir)} {($ VSub_Name '$TEST') (/first/difftype/second/fifo)})
            (C {(ln)} {(-s)} {(DQ ('old link'))} {($ VSub_Name '$OLD') (/first/difflinks/second/link)})
            (C {(ln)} {(-s)} {(DQ ('test link'))} {($ VSub_Name '$TEST') (/first/difflinks/second/link)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/first/difffiles/second/file)}
                  spids: [969]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/first/difffiles/second/file)}
                  spids: [981]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/second/equal/first/file)}
                  spids: [1011]
                )
              ]
            )
            (C {(mkfifo)} {($ VSub_Name '$NEW') (/second/equal/first/fifo)})
            (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/second/equal/first/link)})
            (C {(mkdir)} {($ VSub_Name '$NEW') (/second/equal/first/emptydir)})
            (C {(mkdir)} {($ VSub_Name '$NEW') (/second/equal/first/fulldir)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/second/equal/first/fulldir/file)}
                  spids: [1053]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkfifo)} {($ VSub_Name '$i') (/second/second/equal/fifo)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/second/second/equal/file)}
                          spids: [1116]
                        )
                      ]
                    )
                    (C {(mkdir)} {($ VSub_Name '$i') (/second/second/equal/dir)})
                    (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$i') (/second/second/equal/link)})
                  ]
                  spids: [1101 1140]
                )
              spids: [1095 1099]
            )
            (C {(mkdir)} {($ VSub_Name '$NEW') (/second/second/difftype/dir)})
            (C {(mkfifo)} {($ VSub_Name '$TEST') (/second/second/difftype/dir)})
            (C {(ln)} {(-s)} {(DQ ('new link'))} {($ VSub_Name '$NEW') (/second/second/difflinks/link)})
            (C {(ln)} {(-s)} {(DQ ('test link'))} {($ VSub_Name '$TEST') (/second/second/difflinks/link)})
            (SimpleCommand
              words: [{(echo)} {(DQ (new))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/second/second/difffiles/file)}
                  spids: [1234]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (test))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/second/second/difffiles/file)}
                  spids: [1246]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/difftype/equal/difftype/file)}
                          spids: [1312]
                        )
                      ]
                    )
                    (C {(mkdir)} {($ VSub_Name '$i') (/difftype/equal/difftype/fromdir)})
                    (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$i') (/difftype/equal/difftype/todir)})
                  ]
                  spids: [1303 1336]
                )
              spids: [1297 1301]
            )
            (C {(ln)} {(-s)} {(DQ (test))} {($ VSub_Name '$NEW') (/difftype/equal/difftype/file)})
            (C {(mkfifo)} {($ VSub_Name '$NEW') (/difftype/equal/difftype/fromdir)})
            (C {(mkdir)} {($ VSub_Name '$NEW') (/difftype/equal/difftype/todir)})
            (C {(mkfifo)} {($ VSub_Name '$OLD') (/difftype/first/first/fifo)})
            (C {(mkdir)} {($ VSub_Name '$NEW') (/difftype/first/first/fifo)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/difftype/difftype/equal/fifo)}
                  spids: [1438]
                )
              ]
            )
            (C {(mkfifo)} {($ VSub_Name '$OLD') (/difftype/difftype/equal/file)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkfifo)} {($ VSub_Name '$i') (/difftype/difftype/equal/fifo)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (bar))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/difftype/difftype/equal/file)}
                          spids: [1476]
                        )
                      ]
                    )
                  ]
                  spids: [1461 1482]
                )
              spids: [1455 1459]
            )
            (C {(mkfifo)} {($ VSub_Name '$OLD') (/difftype/difftype/difftype/one)})
            (C {(mkdir)} {($ VSub_Name '$NEW') (/difftype/difftype/difftype/one)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/difftype/difftype/difftype/one)}
                  spids: [1534]
                )
              ]
            )
            (C {(mkdir)} {($ VSub_Name '$OLD') (/difftype/difftype/difftype/two)})
            (SimpleCommand
              words: [{(echo)} {(DQ (baz))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/difftype/difftype/difftype/two)}
                  spids: [1552]
                )
              ]
            )
            (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$TEST') (/difftype/difftype/difftype/two)})
            (C {(mkfifo)} {($ VSub_Name '$OLD') (/difftype/difftype/difflinks/link)})
            (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difftype/difftype/difflinks/link)})
            (C {(ln)} {(-s)} {(DQ (test))} {($ VSub_Name '$TEST') (/difftype/difftype/difflinks/link)})
            (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difftype/difftype/difffiles/file)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/difftype/difftype/difffiles/file)}
                  spids: [1652]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/difftype/difftype/difffiles/file)}
                  spids: [1664]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$i') (/difflinks/equal/difflinks/link)})
                  ]
                  spids: [1690 1705]
                )
              spids: [1684 1688]
            )
            (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difflinks/equal/difflinks/link)})
            (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difflinks/first/first/link)})
            (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difflinks/first/first/link)})
            (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difflinks/difftype/difftype/link)})
            (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difflinks/difftype/difftype/link)})
            (SimpleCommand
              words: [{(echo)} {(DQ (test))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/difflinks/difftype/difftype/link)}
                  spids: [1831]
                )
              ]
            )
            (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difflinks/difflinks/equal/link)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$i') (/difflinks/difflinks/equal/link)})
                  ]
                  spids: [1886 1901]
                )
              spids: [1880 1884]
            )
            (C {(ln)} {(-s)} {(DQ (old))} {($ VSub_Name '$OLD') (/difflinks/difflinks/difflinks/link)})
            (C {(ln)} {(-s)} {(DQ (new))} {($ VSub_Name '$NEW') (/difflinks/difflinks/difflinks/link)})
            (C {(ln)} {(-s)} {(DQ (test))} {($ VSub_Name '$TEST') (/difflinks/difflinks/difflinks/link)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/difffiles/equal/difffiles/file)}
                          spids: [2012]
                        )
                      ]
                    )
                  ]
                  spids: [2003 2018]
                )
              spids: [1997 2001]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/difffiles/equal/difffiles/file)}
                  spids: [2027]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/difffiles/first/first/file)}
                  spids: [2061]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/difffiles/first/first/file)}
                  spids: [2073]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (old))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/difffiles/difftype/difftype/file)}
                  spids: [2124]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (new))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/difffiles/difftype/difftype/file)}
                  spids: [2136]
                )
              ]
            )
            (C {(mkfifo)} {($ VSub_Name '$TEST') (/difffiles/difftype/difftype/file)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/difffiles/difffiles/equal/file)}
                  spids: [2197]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ (bar))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/difffiles/difffiles/equal/file)}
                          spids: [2223]
                        )
                      ]
                    )
                  ]
                  spids: [2214 2229]
                )
              spids: [2208 2212]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/difffiles/difffiles/difffiles/simple)}
                  spids: [2251]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('this is an old line\n') ('\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [2256]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/difffiles/difffiles/difffiles/simple)}
                  spids: [2265]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('this is a new line\n') ('\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [2270]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/difffiles/difffiles/difffiles/simple)}
                  spids: [2279]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('this is an old line\n') ('\n') ('this is a local line\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [2284]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/difffiles/difffiles/difffiles/conflict)}
                  spids: [2294]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('this is an old file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [2299]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/difffiles/difffiles/difffiles/conflict)}
                  spids: [2307]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('this is a new file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [2312]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/difffiles/difffiles/difffiles/conflict)}
                  spids: [2320]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('this is a test file\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [2325]
                )
              ]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD') (/adddir)} {($ VSub_Name '$NEW') (/adddir)} 
              {($ VSub_Name '$TEST') (/adddir)}
            )
            (C {(mkdir)} {($ VSub_Name '$NEW') (/adddir/conflict)})
            (C {(touch)} {($ VSub_Name '$NEW') (/adddir/conflict/newfile)})
            (C {(touch)} {($ VSub_Name '$TEST') (/adddir/conflict)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [(C {(mkdir)} {($ VSub_Name '$i') (/adddir/partial)})]
                  spids: [2422 2431]
                )
              spids: [2416 2420]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/adddir/partial/file)}
                  spids: [2440]
                )
              ]
            )
            (C {(mkfifo)} {($ VSub_Name '$TEST') (/adddir/partial/fifo)})
            (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD') (/rmdir)} {($ VSub_Name '$NEW') (/rmdir)} 
              {($ VSub_Name '$TEST') (/rmdir)}
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [(C {(mkdir)} {($ VSub_Name '$i') (/rmdir/extra)})]
                  spids: [2491 2500]
                )
              spids: [2485 2489]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/rmdir/extra/localfile.txt)}
                  spids: [2509]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [(C {(mkdir)} {($ VSub_Name '$i') (/rmdir/conflict)})]
                  spids: [2535 2544]
                )
              spids: [2529 2533]
            )
            (C {(mkfifo)} {($ VSub_Name '$OLD') (/rmdir/conflict/difftype)})
            (C {(mkdir)} {($ VSub_Name '$TEST') (/rmdir/conflict/difftype)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkdir)} {(-p)} {($ VSub_Name '$i') (/rmdir/partial/subdir)})
                    (C {(mkfifo)} {($ VSub_Name '$i') (/rmdir/partial/subdir/fifo)})
                  ]
                  spids: [2579 2596]
                )
              spids: [2573 2577]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/rmdir/partial/subdir/file)}
                  spids: [2605]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (ForEach
                      iter_name: j
                      iter_words: [{(already)} {(old)} {(fromdir)} {(todir)}]
                      do_arg_iter: F
                      body: 
                        (DoGroup
                          children: [
                            (C {(mkdir)} {(-p)} {($ VSub_Name '$i') (/dirchange/) ($ VSub_Name '$j')})
                          ]
                          spids: [2647 2659]
                        )
                      spids: [2637 2645]
                    )
                  ]
                  spids: [2629 2662]
                )
              spids: [2621 2627]
            )
            (C {(mkdir)} {($ VSub_Name '$OLD') (/dirchange/already/fromdir)})
            (SimpleCommand
              words: [{(echo)} {(DQ (blah))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/dirchange/already/fromdir/somefile)}
                  spids: [2690]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ (bar))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/dirchange/already/fromdir)}
                          spids: [2716]
                        )
                      ]
                    )
                  ]
                  spids: [2707 2722]
                )
              spids: [2701 2705]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (baz))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/dirchange/already/todir)}
                  spids: [2744]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$NEW')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkdir)} {($ VSub_Name '$i') (/dirchange/already/todir)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (blah))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/dirchange/already/todir/somefile)}
                          spids: [2776]
                        )
                      ]
                    )
                  ]
                  spids: [2761 2782]
                )
              spids: [2755 2759]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkdir)} {($ VSub_Name '$i') (/dirchange/old/fromdir)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (blah))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/dirchange/old/fromdir/somefile)}
                          spids: [2820]
                        )
                      ]
                    )
                  ]
                  spids: [2805 2826]
                )
              spids: [2799 2803]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/dirchange/old/fromdir)}
                  spids: [2835]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/dirchange/old/todir)}
                          spids: [2874]
                        )
                      ]
                    )
                  ]
                  spids: [2865 2880]
                )
              spids: [2859 2863]
            )
            (C {(mkdir)} {($ VSub_Name '$NEW') (/dirchange/old/todir)})
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/dirchange/old/todir/file)}
                  spids: [2895]
                )
              ]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(mkdir)} {($ VSub_Name '$i') (/dirchange/fromdir/extradir)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (foo))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$i') (/dirchange/fromdir/extradir/file)}
                          spids: [2944]
                        )
                      ]
                    )
                  ]
                  spids: [2929 2950]
                )
              spids: [2923 2927]
            )
            (C {(mkfifo)} {($ VSub_Name '$TEST') (/dirchange/fromdir/extradir/fifo)})
            (C {(ln)} {(-s)} {(DQ (bar))} {($ VSub_Name '$NEW') (/dirchange/fromdir/extradir)})
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_Name '$OLD')} {($ VSub_Name '$TEST')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [(C {(mkdir)} {($ VSub_Name '$i') (/dirchange/fromdir/conflict)})]
                  spids: [2995 3004]
                )
              spids: [2989 2993]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/dirchange/fromdir/conflict/somefile)}
                  spids: [3013]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/dirchange/fromdir/conflict/somefile)}
                  spids: [3025]
                )
              ]
            )
            (C {(mkfifo)} {($ VSub_Name '$NEW') (/dirchange/fromdir/conflict)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/dirchange/todir/difffile)}
                  spids: [3056]
                )
              ]
            )
            (C {(mkdir)} {($ VSub_Name '$NEW') (/dirchange/todir/difffile)})
            (SimpleCommand
              words: [{(echo)} {(DQ (baz))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/dirchange/todir/difffile/file)}
                  spids: [3074]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (bar))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/dirchange/todir/difffile)}
                  spids: [3086]
                )
              ]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/dirchange/todir/difftype)}
                  spids: [3107]
                )
              ]
            )
            (C {(mkdir)} {($ VSub_Name '$NEW') (/dirchange/todir/difftype)})
            (SimpleCommand
              words: [{(echo)} {(DQ (baz))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/dirchange/todir/difftype/file)}
                  spids: [3125]
                )
              ]
            )
            (C {(mkfifo)} {($ VSub_Name '$TEST') (/dirchange/todir/difftype)})
            (SimpleCommand
              words: [{(echo)} {(DQ ('foo:*:16000:100::0:0:& user:/home/foo:/bin/tcsh'))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/etc/master.passwd)}
                  spids: [3153]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/etc/login.conf)}
                  spids: [3172]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('default:') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('\n') 
                        ('\t:passwd_format=md5:\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [3177]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/etc/login.conf)}
                  spids: [3188]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('default:') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('\n') 
                        ('\t:passwd_format=md5:') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('\n') ('\t:copyright=/etc/COPYRIGHT\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [3193]
                )
              ]
            )
            (C {(cp)} {($ VSub_Name '$OLD') (/etc/login.conf)} {($ VSub_Name '$TEST') (/etc/login.conf)})
            (C {(mkdir)} {(-p)} {($ VSub_Name '$OLD') (/etc/mail)} {($ VSub_Name '$NEW') (/etc/mail)} 
              {($ VSub_Name '$TEST') (/etc/mail)}
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/etc/mail/aliases)}
                  spids: [3239]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('# root: me@my.domain\n') ('\n') 
                        ('# Basic system aliases -- these MUST be present\n') ('MAILER-DAEMON: postmaster\n') ('postmaster: root\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [3244]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/etc/mail/aliases)}
                  spids: [3256]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('# root: me@my.domain\n') ('\n') 
                        ('# Basic system aliases -- these MUST be present\n') ('MAILER-DAEMON: postmaster\n') ('postmaster: root\n') ('\n') 
                        ('# General redirections for pseudo accounts\n') ('_dhcp:  root\n') ('_pflogd: root\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [3261]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/etc/mail/aliases)}
                  spids: [3277]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('root: someone@example.com\n') ('\n') 
                        ('# Basic system aliases -- these MUST be present\n') ('MAILER-DAEMON: postmaster\n') ('postmaster: root\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [3282]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$OLD') (/etc/services)}
                  spids: [3303]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('rtmp\t\t  1/ddp\t   #Routing Table Maintenance Protocol\n') 
                        ('tcpmux\t\t  1/tcp\t   #TCP Port Service Multiplexer\n') ('tcpmux\t\t  1/udp\t   #TCP Port Service Multiplexer\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [3308]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$NEW') (/etc/services)}
                  spids: [3318]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('rtmp\t\t  1/ddp\t   #Routing Table Maintenance Protocol\n') 
                        ('tcpmux\t\t  1/tcp\t   #TCP Port Service Multiplexer\n') ('tcpmux\t\t  1/udp\t   #TCP Port Service Multiplexer\n') 
                        ('nbp\t\t  2/ddp\t   #Name Binding Protocol\n') ('compressnet\t  2/tcp\t   #Management Utility\n') ('compressnet\t  2/udp\t   #Management Utility\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [3323]
                )
              ]
            )
            (C {(cp)} {($ VSub_Name '$OLD') (/etc/services)} {($ VSub_Name '$TEST') (/etc/services)})
            (C {(mkdir)} {(-p)} {($ VSub_Name '$TEST') (/var/db)})
          ]
          spids: [248]
        )
      spids: [244 247]
    )
    (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: [3396]
                        )
                      ]
                      spids: [3396]
                    )
                  ]
                  spids: [16777215 3384]
                )
              ]
              spids: [16777215 3400]
            )
          ]
          spids: [3360]
        )
      spids: [3356 3359]
    )
    (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: [3450]
                        )
                      ]
                      spids: [3450]
                    )
                  ]
                  spids: [16777215 3438]
                )
              ]
              spids: [16777215 3454]
            )
          ]
          spids: [3412]
        )
      spids: [3408 3411]
    )
    (FuncDef
      name: fifo
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-p)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be a FIFO'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FAILED)
                          op: Equal
                          rhs: {(yes)}
                          spids: [3496]
                        )
                      ]
                      spids: [3496]
                    )
                  ]
                  spids: [16777215 3484]
                )
              ]
              spids: [16777215 3500]
            )
          ]
          spids: [3466]
        )
      spids: [3462 3465]
    )
    (FuncDef
      name: dir
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-d)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be a directory'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FAILED)
                          op: Equal
                          rhs: {(yes)}
                          spids: [3542]
                        )
                      ]
                      spids: [3542]
                    )
                  ]
                  spids: [16777215 3530]
                )
              ]
              spids: [16777215 3546]
            )
          ]
          spids: [3512]
        )
      spids: [3508 3511]
    )
    (FuncDef
      name: link
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:val) op:Equal spids:[3566])]
              spids: [3564]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(Lit_Other '[')} {(-L)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')} 
                              {(Lit_Other ']')}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (' should be a link'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:FAILED)
                          op: Equal
                          rhs: {(yes)}
                          spids: [3597]
                        )
                      ]
                      spids: [3597]
                    )
                  ]
                  spids: [16777215 3585]
                )
                (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:val)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(readlink)} {($ VSub_Name '$TEST') (/) ($ VSub_Number '$1')})
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [3618 3624]
                              )
                            }
                          spids: [3617]
                        )
                      ]
                      spids: [3617]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$val'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('Link ') ($ VSub_Number '$1') (' should link to ') 
                                  (EscapedLiteralPart
                                    token: <Lit_EscapedChar '\\"'>
                                  ) ($ VSub_Number '$2') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                                )
                              }
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FAILED)
                                  op: Equal
                                  rhs: {(yes)}
                                  spids: [3660]
                                )
                              ]
                              spids: [3660]
                            )
                          ]
                          spids: [16777215 3645]
                        )
                      ]
                      spids: [16777215 3664]
                    )
                  ]
                  spids: [3601 3614]
                )
              ]
              spids: [16777215 3667]
            )
          ]
          spids: [3561]
        )
      spids: [3557 3560]
    )
    (FuncDef
      name: file
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:contents) op:Equal spids:[3690])
                (assign_pair lhs:(LhsName name:sum) op:Equal spids:[3692])
              ]
              spids: [3688]
            )
            (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: [3723]
                        )
                      ]
                      spids: [3723]
                    )
                  ]
                  spids: [16777215 3711]
                )
                (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: [3744 3750]
                              )
                            }
                          spids: [3743]
                        )
                      ]
                      spids: [3743]
                    )
                    (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: [3783]
                                )
                              ]
                              spids: [3783]
                            )
                          ]
                          spids: [16777215 3771]
                        )
                      ]
                      spids: [16777215 3787]
                    )
                  ]
                  spids: [3727 3740]
                )
                (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: [3807 3815]
                              )
                            }
                          spids: [3806]
                        )
                      ]
                      spids: [3806]
                    )
                    (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: [3848]
                                )
                              ]
                              spids: [3848]
                            )
                          ]
                          spids: [16777215 3836]
                        )
                      ]
                      spids: [16777215 3852]
                    )
                  ]
                  spids: [3790 3803]
                )
              ]
              spids: [16777215 3855]
            )
          ]
          spids: [3685]
        )
      spids: [3681 3684]
    )
    (FuncDef
      name: conflict
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:sum) op:Equal spids:[3875])]
              spids: [3873]
            )
            (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: [3906]
                        )
                      ]
                      spids: [3906]
                    )
                  ]
                  spids: [16777215 3894]
                )
                (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: [3927 3935]
                              )
                            }
                          spids: [3926]
                        )
                      ]
                      spids: [3926]
                    )
                    (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: [3968]
                                )
                              ]
                              spids: [3968]
                            )
                          ]
                          spids: [16777215 3956]
                        )
                      ]
                      spids: [16777215 3972]
                    )
                  ]
                  spids: [3910 3923]
                )
              ]
              spids: [16777215 3975]
            )
          ]
          spids: [3870]
        )
      spids: [3866 3869]
    )
    (FuncDef
      name: check_trees
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('Checking tree for correct results:'))})
            (C {(fifo)} {(/equal/equal/equal/fifo)})
            (C {(file)} {(/equal/equal/equal/file)} {(DQ (foo))})
            (C {(dir)} {(/equal/equal/equal/dir)})
            (C {(link)} {(/equal/equal/equal/link)} {(DQ (bar))})
            (C {(missing)} {(/equal/first/first/fifo)})
            (C {(missing)} {(/equal/first/first/file)})
            (C {(missing)} {(/equal/first/first/dir)})
            (C {(missing)} {(/equal/first/first/link)})
            (C {(file)} {(/equal/difftype/difftype/fifo)} {(DQ (bar))})
            (C {(link)} {(/equal/difftype/difftype/fromdir)} {(DQ (test))})
            (C {(link)} {(/equal/difflinks/difflinks/link)} {(DQ (bar))})
            (C {(file)} {(/equal/difffiles/difffiles/file)} {(DQ (bar))})
            (C {(missing)} {(/first/equal/second/fifo)})
            (C {(missing)} {(/first/equal/second/file)})
            (C {(missing)} {(/first/equal/second/emptydir)})
            (C {(missing)} {(/first/equal/second/link)})
            (C {(missing)} {(/first/equal/second/fulldir)})
            (C {(missing)} {(/first/first/equal/fifo)})
            (C {(missing)} {(/first/first/equal/file)})
            (C {(missing)} {(/first/first/equal/dir)})
            (C {(missing)} {(/first/first/equal/link)})
            (C {(present)} {(/first/difftype/second/fifo)})
            (C {(link)} {(/first/difflinks/second/link)} {(DQ ('test link'))})
            (C {(file)} {(/first/difffiles/second/file)} {(DQ (bar))})
            (C {(file)} {(/second/equal/first/file)} {(DQ (bar))})
            (C {(fifo)} {(/second/equal/first/fifo)})
            (C {(link)} {(/second/equal/first/link)} {(DQ (new))})
            (C {(missing)} {(/second/equal/first/emptydir)})
            (C {(file)} {(/second/equal/first/fulldir/file)} {(DQ (foo))})
            (C {(fifo)} {(/second/second/equal/fifo)})
            (C {(file)} {(/second/second/equal/file)} {(DQ (foo))})
            (C {(dir)} {(/second/second/equal/dir)})
            (C {(link)} {(/second/second/equal/link)} {(DQ (bar))})
            (C {(fifo)} {(/second/second/difftype/dir)})
            (C {(link)} {(/second/second/difflinks/link)} {(DQ ('test link'))})
            (C {(file)} {(/second/second/difffiles/file)} {(DQ (test))})
            (C {(conflict)} {(/second/second/difffiles/file)} {(4f2ee8620a251fd53f06bb6112eb6ffa)})
            (C {(link)} {(/difftype/equal/difftype/file)} {(DQ (test))})
            (C {(fifo)} {(/difftype/equal/difftype/fromdir)})
            (C {(missing)} {(/difftype/equal/difftype/todir)})
            (C {(missing)} {(/difftype/first/first/fifo)})
            (C {(fifo)} {(/difftype/difftype/equal/fifo)})
            (C {(file)} {(/difftype/difftype/equal/file)} {(DQ (bar))})
            (C {(file)} {(/difftype/difftype/difftype/one)} {(DQ (foo))})
            (C {(link)} {(/difftype/difftype/difftype/two)} {(DQ (bar))})
            (C {(link)} {(/difftype/difftype/difflinks/link)} {(DQ (test))})
            (C {(conflict)} {(/difftype/difftype/difffiles/file)} {(117f2bcd1f6491f6044e79e5a57a9229)})
            (C {(link)} {(/difflinks/equal/difflinks/link)} {(DQ (new))})
            (C {(missing)} {(/difflinks/first/first/link)})
            (C {(file)} {(/difflinks/difftype/difftype/link)} {(DQ (test))})
            (C {(link)} {(/difflinks/difflinks/equal/link)} {(DQ (new))})
            (C {(link)} {(/difflinks/difflinks/difflinks/link)} {(DQ (test))})
            (C {(file)} {(/difffiles/equal/difffiles/file)} {(DQ (bar))})
            (C {(missing)} {(/difffiles/first/first/file)})
            (C {(fifo)} {(/difffiles/difftype/difftype/file)})
            (C {(file)} {(/difffiles/difffiles/equal/file)} {(DQ (bar))})
            (C {(file)} {(/difffiles/difffiles/difffiles/simple)} {(DQ )} 
              {(cabc7e5e80b0946d79edd555e9648486)}
            )
            (C {(file)} {(/difffiles/difffiles/difffiles/conflict)} {(DQ ('this is a test file'))})
            (C {(conflict)} {(/difffiles/difffiles/difffiles/conflict)} 
              {(8261cfdd89280c4a6c26e4ac86541fe9)}
            )
            (C {(file)} {(/adddir/conflict)})
            (C {(file)} {(/adddir/partial/file)} {(DQ (foo))})
            (C {(fifo)} {(/adddir/partial/fifo)})
            (C {(dir)} {(/rmdir/extra)})
            (C {(file)} {(/rmdir/extra/localfile.txt)} {(DQ (foo))})
            (C {(dir)} {(/rmdir/conflict/difftype)})
            (C {(present)} {(/rmdir/conflict)})
            (C {(missing)} {(/rmdir/partial)})
            (C {(file)} {(/dirchange/already/fromdir)} {(DQ (bar))})
            (C {(file)} {(/dirchange/already/todir/somefile)} {(DQ (blah))})
            (C {(file)} {(/dirchange/old/fromdir)} {(DQ (bar))})
            (C {(file)} {(/dirchange/old/todir/file)} {(DQ (bar))})
            (C {(missing)} {(/dirchange/fromdir/extradir/file)})
            (C {(fifo)} {(/dirchange/fromdir/extradir/fifo)})
            (C {(file)} {(/dirchange/fromdir/conflict/somefile)} {(DQ (bar))})
            (C {(file)} {(/dirchange/todir/difffile)} {(DQ (bar))})
            (C {(fifo)} {(/dirchange/todir/difftype)})
            (C {(file)} {(/etc/master.passwd)})
            (C {(file)} {(/etc/passwd)})
            (C {(file)} {(/etc/pwd.db)})
            (C {(file)} {(/etc/spwd.db)})
            (C {(file)} {(/etc/login.conf)} {(DQ )} {(7774a0f9a3a372c7c109c32fd31c4b6b)})
            (C {(file)} {(/etc/login.conf.db)})
            (C {(file)} {(/etc/mail/aliases)} {(DQ )} {(7d598f89ec040ab56af54011bdb83337)})
            (C {(file)} {(/etc/services)} {(DQ )} {(37fb6a8d1273f3b78329d431f21d9c7d)})
            (C {(file)} {(/var/db/services.db)})
          ]
          spids: [3984]
        )
      spids: [3980 3983]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} 
                  {
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(id)} {(-u)})])
                      left_token: <Left_Backtick '`'>
                      spids: [4823 4827]
                    )
                  } {(-ne)} {(0)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('must be root'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
          spids: [16777215 4836]
        )
      ]
      spids: [16777215 4850]
    )
    (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 4864]
        )
      ]
      spids: [16777215 4873]
    )
    (C {(build_trees)})
    (SimpleCommand
      words: [
        {($ VSub_Name '$COMMAND')}
        {(-nr)}
        {(-d)}
        {($ VSub_Name '$WORKDIR')}
        {(-D)}
        {($ VSub_Name '$TEST')}
      ]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/testn.out)}
          spids: [4891]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/correct.out)}
          spids: [4899]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ('  D /dirchange/fromdir/extradir/file\n') ('  D /dirchange/old/fromdir/somefile\n') 
                ('  D /first/equal/second/fifo\n') ('  D /first/equal/second/file\n') ('  D /first/equal/second/fulldir/file\n') 
                ('  D /first/equal/second/link\n') ('  D /rmdir/partial/subdir/fifo\n') ('  D /rmdir/partial/subdir\n') ('  D /rmdir/partial\n') 
                ('  D /first/equal/second/fulldir\n') ('  D /first/equal/second/emptydir\n') ('  C /difffiles/difffiles/difffiles/conflict\n') 
                ('  M /difffiles/difffiles/difffiles/simple\n') ('  U /difffiles/equal/difffiles/file\n') ('  U /difflinks/equal/difflinks/link\n') 
                ('  C /difftype/difftype/difffiles/file\n') ('  U /difftype/equal/difftype/file\n') ('  U /difftype/equal/difftype/fromdir\n') 
                ('  D /difftype/equal/difftype/todir\n') ('  U /dirchange/old/fromdir\n') ('  U /dirchange/old/todir\n') ('  U /etc/login.conf\n') 
                ('  M /etc/mail/aliases\n') ('  U /etc/services\n') ('  A /adddir/partial/file\n') ('  A /dirchange/old/todir/file\n') 
                ('  A /etc/master.passwd\n') ('  A /second/equal/first/fifo\n') ('  A /second/equal/first/file\n') 
                ('  A /second/equal/first/fulldir/file\n') ('  A /second/equal/first/link\n') ('  C /second/second/difffiles/file\n') ('Warnings:\n') 
                ('  Modified regular file remains: /dirchange/fromdir/conflict/somefile\n') ('  Modified regular file remains: /first/difffiles/second/file\n') 
                ('  Modified symbolic link remains: /first/difflinks/second/link\n') ('  Modified directory remains: /first/difftype/second/fifo\n') 
                ('  Modified directory remains: /rmdir/conflict/difftype\n') ('  Non-empty directory remains: /rmdir/extra\n') ('  Non-empty directory remains: /rmdir/conflict\n') 
                (
'  Modified mismatch: /difffiles/difftype/difftype/file (regular file vs fifo file)\n'
                ) ('  Removed file changed: /difffiles/first/first/file\n') 
                ('  Modified link changed: /difflinks/difflinks/difflinks/link (') (Right_DoubleQuote '"') (old) (Right_DoubleQuote '"') (' became ') (Right_DoubleQuote '"') (new) 
                (Right_DoubleQuote '"') (')\n') ('  Modified mismatch: /difflinks/difftype/difftype/link (symbolic link vs regular file)\n') 
                ('  Removed link changed: /difflinks/first/first/link (') (Right_DoubleQuote '"') (old) (Right_DoubleQuote '"') (' became ') (Right_DoubleQuote '"') (new) 
                (Right_DoubleQuote '"') (')\n') ('  New link conflict: /difftype/difftype/difflinks/link (') (Right_DoubleQuote '"') (new) 
                (Right_DoubleQuote '"') (' vs ') (Right_DoubleQuote '"') (test) (Right_DoubleQuote '"') (')\n') 
                (
'  Modified regular file changed: /difftype/difftype/difftype/one (fifo file became directory)\n'
                ) 
                (
'  Modified symbolic link changed: /difftype/difftype/difftype/two (directory became regular file)\n'
                ) ('  Remove mismatch: /difftype/first/first/fifo (fifo file became directory)\n') 
                (
'  Modified directory changed: /dirchange/fromdir/conflict (directory became fifo file)\n'
                ) ('  Modified directory changed: /dirchange/fromdir/extradir (directory became symbolic link)\n') 
                (
'  Modified regular file changed: /dirchange/todir/difffile (regular file became directory)\n'
                ) ('  Modified fifo file changed: /dirchange/todir/difftype (regular file became directory)\n') 
                ('  New file mismatch: /adddir/conflict (directory vs regular file)\n') ('  Directory mismatch: ') ($ VSub_Name '$TEST') ('/adddir/conflict (regular file)\n') 
                ('  Directory mismatch: ') ($ VSub_Name '$TEST') ('/dirchange/todir/difffile (regular file)\n') ('  Directory mismatch: ') 
                ($ VSub_Name '$TEST') ('/dirchange/todir/difftype (fifo file)\n') ('  New link conflict: /second/second/difflinks/link (') 
                (Right_DoubleQuote '"') ('new link') (Right_DoubleQuote '"') (' vs ') (Right_DoubleQuote '"') ('test link') 
                (Right_DoubleQuote '"') (')\n') ('  New file mismatch: /second/second/difftype/dir (directory vs fifo file)\n') 
                (
'  Needs update: /etc/mail/aliases.db (requires manual update via newaliases(1))\n'
                )
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [4904]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for -n:'))})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(diff)} {(-u)} {(-L)} {(DQ (correct))} {($ VSub_Name '$WORKDIR') (/correct.out)} {(-L)} 
          {(DQ (test))} {($ VSub_Name '$WORKDIR') (/testn.out)}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:failed) op:Equal rhs:{(YES)} spids:[5039])]
          spids: [5039]
        )
      ]
    )
    (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: [5055]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for real:'))})
    (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:[5093])]
          spids: [5093]
        )
      ]
    )
    (C {(check_trees)})
    (C {(Lit_Other '[')} {(DQ (${ VSub_Name FAILED))} {(Lit_Other '=')} {(no)} {(Lit_Other ']')})
  ]
)