(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: tzsetup.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: build_trees
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:i) op:Equal spids:[249])
                (assign_pair lhs:(LhsName name:j) op:Equal spids:[251])
                (assign_pair lhs:(LhsName name:k) op:Equal spids:[253])
              ]
              spids: [247]
            )
            (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 {(mkdir)} {(-p)} {($ VSub_Name '$TEST') (/etc)})
            (C {(mkdir)} {(-p)} {($ VSub_Name '$TEST') (/var/db)})
            (C {(mkdir)} {(-p)} {($ VSub_Name '$TEST') (/usr/share/zoneinfo)})
            (SimpleCommand
              words: [{(echo)} {(DQ (foo))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TEST') (/usr/share/zoneinfo/foo)}
                  spids: [316]
                )
              ]
            )
          ]
          spids: [239]
        )
      spids: [235 238]
    )
    (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: [368]
                        )
                      ]
                      spids: [368]
                    )
                  ]
                  spids: [16777215 356]
                )
              ]
              spids: [16777215 372]
            )
          ]
          spids: [332]
        )
      spids: [328 331]
    )
    (FuncDef
      name: link
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:val) op:Equal spids:[392])]
              spids: [390]
            )
            (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: [423]
                        )
                      ]
                      spids: [423]
                    )
                  ]
                  spids: [16777215 411]
                )
                (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: [444 450]
                              )
                            }
                          spids: [443]
                        )
                      ]
                      spids: [443]
                    )
                    (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: [486]
                                )
                              ]
                              spids: [486]
                            )
                          ]
                          spids: [16777215 471]
                        )
                      ]
                      spids: [16777215 490]
                    )
                  ]
                  spids: [427 440]
                )
              ]
              spids: [16777215 493]
            )
          ]
          spids: [387]
        )
      spids: [383 386]
    )
    (FuncDef
      name: file
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:contents) op:Equal spids:[516])
                (assign_pair lhs:(LhsName name:sum) op:Equal spids:[518])
              ]
              spids: [514]
            )
            (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: [549]
                        )
                      ]
                      spids: [549]
                    )
                  ]
                  spids: [16777215 537]
                )
                (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: [570 576]
                              )
                            }
                          spids: [569]
                        )
                      ]
                      spids: [569]
                    )
                    (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: [609]
                                )
                              ]
                              spids: [609]
                            )
                          ]
                          spids: [16777215 597]
                        )
                      ]
                      spids: [16777215 613]
                    )
                  ]
                  spids: [553 566]
                )
                (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: [633 641]
                              )
                            }
                          spids: [632]
                        )
                      ]
                      spids: [632]
                    )
                    (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: [674]
                                )
                              ]
                              spids: [674]
                            )
                          ]
                          spids: [16777215 662]
                        )
                      ]
                      spids: [16777215 678]
                    )
                  ]
                  spids: [616 629]
                )
              ]
              spids: [16777215 681]
            )
          ]
          spids: [511]
        )
      spids: [507 510]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} 
                  {
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(id)} {(-u)})])
                      left_token: <Left_Backtick '`'>
                      spids: [690 694]
                    )
                  } {(-ne)} {(0)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('must be root'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
          spids: [16777215 703]
        )
      ]
      spids: [16777215 717]
    )
    (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 731]
        )
      ]
      spids: [16777215 740]
    )
    (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: [762]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/correct.out)}
          spids: [770]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: {(DQ )}
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [775]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for no /etc/localtime with -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:[812])]
          spids: [812]
        )
      ]
    )
    (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: [828]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for no /etc/localtime:'))})
    (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:[866])]
          spids: [866]
        )
      ]
    )
    (C {(missing)} {(/etc/localtime)})
    (C {(missing)} {(/var/db/zoneinfo)})
    (C {(build_trees)})
    (C {(ln)} {(-s)} {(/dev/null)} {($ VSub_Name '$TEST') (/etc/localtime)})
    (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: [907]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/correct.out)}
          spids: [915]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: {(DQ )}
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [920]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for symlinked /etc/localtime with -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:[957])]
          spids: [957]
        )
      ]
    )
    (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: [973]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for symlinked /etc/localtime:'))})
    (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:[1011])]
          spids: [1011]
        )
      ]
    )
    (C {(link)} {(/etc/localtime)} {(DQ (/dev/null))})
    (C {(missing)} {(/var/db/zoneinfo)})
    (C {(build_trees)})
    (SimpleCommand
      words: [{(echo)} {(DQ (bar))}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$TEST') (/etc/localtime)}
          spids: [1040]
        )
      ]
    )
    (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: [1058]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/correct.out)}
          spids: [1066]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ('Warnings:\n') 
                ('  Needs update: /etc/localtime (required manual update via tzsetup(8))\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [1071]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for missing /var/db/zoneinfo with -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:[1110])]
          spids: [1110]
        )
      ]
    )
    (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: [1126]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for missing /var/db/zoneinfo:'))})
    (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:[1164])]
          spids: [1164]
        )
      ]
    )
    (C {(file)} {(/etc/localtime)} {(DQ (bar))})
    (C {(missing)} {(/var/db/zoneinfo)})
    (C {(build_trees)})
    (SimpleCommand
      words: [{(echo)} {(DQ (bar))}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$TEST') (/etc/localtime)}
          spids: [1193]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ (foo))}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$TEST') (/var/db/zoneinfo)}
          spids: [1204]
        )
      ]
    )
    (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: [1222]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: 16777215
          arg_word: {($ VSub_Name '$WORKDIR') (/correct.out)}
          spids: [1230]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: {(DQ )}
          do_expansion: True
          here_end: EOF
          was_filled: T
          spids: [1235]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for real update with -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:[1272])]
          spids: [1272]
        )
      ]
    )
    (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: [1288]
        )
      ]
    )
    (C {(echo)} {(DQ ('Differences for real update:'))})
    (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:[1326])]
          spids: [1326]
        )
      ]
    )
    (C {(file)} {(/etc/localtime)} {(DQ (foo))})
    (C {(file)} {(/var/db/zoneinfo)} {(DQ (foo))})
    (C {(Lit_Other '[')} {(DQ (${ VSub_Name FAILED))} {(Lit_Other '=')} {(no)} {(Lit_Other ']')})
  ]
)