(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:compress) op:Equal rhs:{(DQ (bzip2))} spids:[20])]
      spids: [20]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:inclist)
          op: Equal
          rhs: 
            {
              (DQ (/tmp/backup.inclist.) 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (C {(date)} 
                          {(Lit_Other '+') (Lit_Other '%') (d) (Lit_Other '%') (m) (Lit_Other '%') (y)}
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [31 41]
                )
              )
            }
          spids: [28]
        )
      ]
      spids: [28]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:output)
          op: Equal
          rhs: 
            {
              (DQ (/tmp/backup.) 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (C {(date)} 
                          {(Lit_Other '+') (Lit_Other '%') (d) (Lit_Other '%') (m) (Lit_Other '%') (y)}
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [48 58]
                ) (.bz2)
              )
            }
          spids: [45]
        )
      ]
      spids: [45]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tsfile)
          op: Equal
          rhs: {(DQ ($ VSub_Name '$HOME') (/.backup.timestamp))}
          spids: [63]
        )
      ]
      spids: [63]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:btype) op:Equal rhs:{(DQ (incremental))} spids:[70])]
      spids: [70]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:noinc) op:Equal rhs:{(0)} spids:[79])]
      spids: [79]
    )
    (C {(trap)} {(DQ ('/bin/rm -f ') ($ VSub_Name '$inclist'))} {(EXIT)})
    (FuncDef
      name: usageQuit
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(DQ (EOF))}
                  here_end_span_id: 118
                  stdin_parts: [
                    ('Usage: $0 [-o output] [-i|-f] [-n]\n')
                    ('  -o lets you specify an alternative backup file/device,\n')
                    ('  -i is an incremental, -f is a full backup, and -n prevents\n')
                    ('  updating the timestamp when an incremental backup is done.\n')
                  ]
                )
                (Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})
              ]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [100]
        )
      spids: [96 99]
    )
    (WhileUntil
      keyword: <KW_While while>
      cond: [(Sentence child:(C {(getopts)} {(DQ ('o:ifn'))} {(arg)}) terminator:<Op_Semi ';'>)]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Name '$opt'))}
              arms: [
                (case_arm
                  pat_list: [{(o)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:output)
                              op: Equal
                              rhs: {(DQ ($ VSub_Name '$OPTARG'))}
                              spids: [158]
                            )
                          ]
                          spids: [158]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [154 156 164 16777215]
                )
                (case_arm
                  pat_list: [{(i)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:btype)
                              op: Equal
                              rhs: {(DQ (incremental))}
                              spids: [174]
                            )
                          ]
                          spids: [174]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [170 172 180 16777215]
                )
                (case_arm
                  pat_list: [{(f)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:btype)
                              op: Equal
                              rhs: {(DQ (full))}
                              spids: [187]
                            )
                          ]
                          spids: [187]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [183 185 193 16777215]
                )
                (case_arm
                  pat_list: [{(n)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:noinc)
                              op: Equal
                              rhs: {(1)}
                              spids: [200]
                            )
                          ]
                          spids: [200]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [196 198 204 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '?')}]
                  action: [(C {(usageQuit)})]
                  spids: [207 209 213 16777215]
                )
              ]
              spids: [145 151 216]
            )
          ]
          spids: [142 218]
        )
    )
    (C {(shift)} 
      {
        (ArithSubPart
          anode: 
            (ArithBinary
              op_id: Arith_Minus
              left: (ArithWord w:{($ VSub_Name '$OPTIND')})
              right: (ArithWord w:{(Lit_Digits 1)})
            )
          spids: [223 232]
        )
      }
    )
    (C {(echo)} 
      {(DQ ('Doing ') ($ VSub_Name '$btype') (' backup, saving output to ') ($ VSub_Name '$output'))}
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:timestamp)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(date)} {(Lit_Other '+') (SQ <'%m%d%I%M'>)})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [247 254]
                )
              )
            }
          spids: [245]
        )
      ]
      spids: [245]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$btype'))} {(Lit_Other '=')} {(DQ (incremental))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {($ VSub_Name '$tsfile')} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {(DQ ("Error: can't do an incremental backup: no timestamp file"))}
                      ]
                      redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                    )
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 301]
                )
              ]
              spids: [16777215 319]
            )
            (Pipeline
              children: [
                (C {(find)} {($ VSub_Name '$HOME')} {(-depth)} {(-type)} {(f)} {(-newer)} 
                  {($ VSub_Name '$tsfile')} {(-user)} 
                  {
                    (BracedVarSub
                      token: <VSub_Name USER>
                      suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(LOGNAME)})
                      spids: [338 342]
                    )
                  }
                )
                (C {(pax)} {(-w)} {(-x)} {(tar)})
                (SimpleCommand
                  words: [{($ VSub_Name '$compress')}]
                  redirects: [
                    (Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {($ VSub_Name '$output')}
                    )
                  ]
                )
              ]
              negated: F
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:failure)
                  op: Equal
                  rhs: {(DQ ($ VSub_QMark '$?'))}
                  spids: [365]
                )
              ]
              spids: [365]
            )
          ]
          spids: [16777215 283]
        )
      ]
      else_action: [
        (Pipeline
          children: [
            (C {(find)} {($ VSub_Name '$HOME')} {(-depth)} {(-type)} {(f)} {(-user)} 
              {
                (BracedVarSub
                  token: <VSub_Name USER>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(LOGNAME)})
                  spids: [385 389]
                )
              }
            )
            (C {(pax)} {(-w)} {(-x)} {(tar)})
            (SimpleCommand
              words: [{($ VSub_Name '$compress')}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{($ VSub_Name '$output')})]
            )
          ]
          negated: F
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:failure)
              op: Equal
              rhs: {(DQ ($ VSub_QMark '$?'))}
              spids: [412]
            )
          ]
          spids: [412]
        )
      ]
      spids: [370 417]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$noinc'))} {(Lit_Other '=')} {(DQ (0))} {(-a)} 
                  {(DQ ($ VSub_Name '$failure'))} {(Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(touch)} {(-t)} {($ VSub_Name '$timestamp')} {($ VSub_Name '$tsfile')})]
          spids: [16777215 450]
        )
      ]
      spids: [16777215 461]
    )
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)