(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tracing)
          op: Equal
          rhs: {(/sys/kernel/debug/tracing)}
          spids: [157]
        )
      ]
      spids: [157]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:flock)
              op: Equal
              rhs: {(/var/tmp/.ftrace-lock)}
              spids: [160]
            )
          ]
          spids: [160]
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(0)} spids:[164])]
      spids: [164]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_duration) op:Equal rhs:{(0)} spids:[167])]
          spids: [167]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:duration) op:Equal rhs:{(SQ )} spids:[171])]
          spids: [171]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_pid) op:Equal rhs:{(0)} spids:[174])]
          spids: [174]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:pid) op:Equal rhs:{(SQ )} spids:[178])]
          spids: [178]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_tid) op:Equal rhs:{(0)} spids:[181])]
          spids: [181]
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(SQ )} spids:[185])]
      spids: [185]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(0)} spids:[187])]
          spids: [187]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:filter) op:Equal rhs:{(SQ )} spids:[191])]
          spids: [191]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_view) op:Equal rhs:{(0)} spids:[194])]
          spids: [194]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_headers) op:Equal rhs:{(0)} spids:[198])]
          spids: [198]
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:opt_stack) op:Equal rhs:{(0)} spids:[202])]
          spids: [202]
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:dmesg) op:Equal rhs:{(2)} spids:[206])]
      spids: [206]
    )
    (C {(trap)} {(SQ <":">)} {(INT)} {(QUIT)} {(TERM)} {(PIPE)} {(HUP)})
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLessDash
                  fd: -1
                  body: 
                    {
                      (DQ ("USAGE: tpoint [-hHsv] [-d secs] [-p PID] [-L TID] tracepoint [filter]\n") 
                        ("       tpoint -l\n") ("                 -d seconds      # trace duration, and use buffers\n") 
                        ("                 -p PID          # PID to match on event\n") ("                 -L TID          # thread id to match on event\n") 
                        ("                 -v              # view format file (don't trace)\n") ("                 -H              # include column headers\n") 
                        ("                 -l              # list all tracepoints\n") ("                 -s              # show kernel stack traces\n") 
                        ("                 -h              # this usage message\n") ("   eg,\n") ("       tpoint -l | grep open\n") 
                        ("                                 # find tracepoints containing ") (Right_DoubleQuote "\"") (open) (Right_DoubleQuote "\"") ("\n") 
                        ("       tpoint syscalls:sys_enter_open\n") ("                                 # trace open() syscall entry\n") 
                        ("       tpoint block:block_rq_issue\n") ("                                 # trace block I/O issue\n") 
                        ("       tpoint -s block:block_rq_issue\n") ("                                 # show kernel stacks\n") ("\n") 
                        ("See the man page and example file for more info.\n")
                      )
                    }
                  do_expansion: True
                  here_end: END
                  was_filled: True
                  spids: [238]
                )
                (Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[241])
              ]
            )
            (C {(exit)})
          ]
          spids: [233]
        )
      spids: [229 232]
    )
    (FuncDef
      name: warn
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {(eval)} {(DQ ($ VSub_At "$@"))})] negated:True)
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ ("WARNING: command failed ") 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar "\\\"">
                            ) ($ VSub_At "$@") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">)
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[298])]
                    )
                  ]
                  spids: [-1 293]
                )
              ]
              spids: [-1 309]
            )
          ]
          spids: [279]
        )
      spids: [275 278]
    )
    (FuncDef
      name: end
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[327])]
            )
            (SimpleCommand
              words: [{(echo)} {(DQ ("Ending tracing..."))}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[337])]
            )
            (C {(cd)} {($ VSub_Name "$tracing")})
            (C {(warn)} {(DQ ("echo 0 > ") ($ VSub_Name "$tdir") (/enable))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DParen child:(ArithVarRef name:opt_filter))
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(warn)} {(DQ ("echo 0 > ") ($ VSub_Name "$tdir") (/filter))})]
                  spids: [-1 365]
                )
              ]
              spids: [-1 377]
            )
            (AndOr
              children: [
                (DParen child:(ArithVarRef name:opt_stack))
                (C {(warn)} {(DQ ("echo 0 > options/stacktrace"))})
              ]
              op_id: Op_DAmp
            )
            (C {(warn)} {(DQ ("echo > trace"))})
            (AndOr
              children: [
                (DParen child:(ArithVarRef name:wroteflock))
                (C {(warn)} {(DQ ("rm ") ($ VSub_Name "$flock"))})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [318]
        )
      spids: [314 317]
    )
    (FuncDef
      name: die
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_At "$@"))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[431])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [426]
        )
      spids: [422 425]
    )
    (FuncDef
      name: edie
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_At "$@"))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[459])]
            )
            (SimpleCommand
              words: [{(exec)}]
              redirects: [
                (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[469])
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[472])
              ]
            )
            (C {(end)})
            (C {(exit)} {(1)})
          ]
          spids: [450]
        )
      spids: [446 449]
    )
    (While
      cond: [
        (C {(getopts)} {(d) (Lit_Other ":") (hHlp) (Lit_Other ":") (L) (Lit_Other ":") (sv)} {(opt)})
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name "$opt")}
              arms: [
                (case_arm
                  pat_list: [{(d)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opt_duration)
                              op: Equal
                              rhs: {(1)}
                              spids: [516]
                            )
                          ]
                          spids: [516]
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:duration)
                          op: Equal
                          rhs: {($ VSub_Name "$OPTARG")}
                          spids: [520]
                        )
                      ]
                      spids: [520]
                    )
                  ]
                  spids: [513 514 523 -1]
                )
                (case_arm
                  pat_list: [{(p)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opt_pid)
                              op: Equal
                              rhs: {(1)}
                              spids: [529]
                            )
                          ]
                          spids: [529]
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:pid)
                          op: Equal
                          rhs: {($ VSub_Name "$OPTARG")}
                          spids: [533]
                        )
                      ]
                      spids: [533]
                    )
                  ]
                  spids: [526 527 536 -1]
                )
                (case_arm
                  pat_list: [{(L)}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:opt_tid)
                              op: Equal
                              rhs: {(1)}
                              spids: [542]
                            )
                          ]
                          spids: [542]
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:tid)
                          op: Equal
                          rhs: {($ VSub_Name "$OPTARG")}
                          spids: [546]
                        )
                      ]
                      spids: [546]
                    )
                  ]
                  spids: [539 540 549 -1]
                )
                (case_arm
                  pat_list: [{(H)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_headers)
                          op: Equal
                          rhs: {(1)}
                          spids: [555]
                        )
                      ]
                      spids: [555]
                    )
                  ]
                  spids: [552 553 558 -1]
                )
                (case_arm
                  pat_list: [{(l)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_list)
                          op: Equal
                          rhs: {(1)}
                          spids: [564]
                        )
                      ]
                      spids: [564]
                    )
                  ]
                  spids: [561 562 567 -1]
                )
                (case_arm
                  pat_list: [{(s)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_stack)
                          op: Equal
                          rhs: {(1)}
                          spids: [573]
                        )
                      ]
                      spids: [573]
                    )
                  ]
                  spids: [570 571 576 -1]
                )
                (case_arm
                  pat_list: [{(v)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_view)
                          op: Equal
                          rhs: {(1)}
                          spids: [582]
                        )
                      ]
                      spids: [582]
                    )
                  ]
                  spids: [579 580 585 -1]
                )
                (case_arm
                  pat_list: [{(h)} {(Lit_Other "?")}]
                  action: [(C {(usage)})]
                  spids: [588 591 595 -1]
                )
              ]
              spids: [506 510 598]
            )
          ]
          spids: [503 600]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DParen child:(ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_list)))
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(shift)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: (ArithWord w:{($ VSub_Name "$OPTIND")})
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                  spids: [618 627]
                )
              }
            )
            (AndOr
              children: [(DParen child:(ArithWord w:{($ VSub_Pound "$#")})) (C {(usage)})]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tpoint)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [642]
                )
              ]
              spids: [642]
            )
            (C {(shift)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DParen child:(ArithWord w:{($ VSub_Pound "$#")}))
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:opt_filter)
                          op: Equal
                          rhs: {(1)}
                          spids: [662]
                        )
                      ]
                      spids: [662]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:filter)
                          op: Equal
                          rhs: {($ VSub_Number "$1")}
                          spids: [666]
                        )
                      ]
                      spids: [666]
                    )
                  ]
                  spids: [-1 659]
                )
              ]
              spids: [-1 670]
            )
          ]
          spids: [-1 613]
        )
      ]
      spids: [-1 672]
    )
    (AndOr
      children: [
        (DParen
          child: 
            (ArithBinary
              op_id: Arith_Great
              left: 
                (ArithBinary
                  op_id: Arith_Plus
                  left: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:opt_pid)
                      right: (ArithVarRef name:opt_filter)
                    )
                  right: (ArithVarRef name:opt_tid)
                )
              right: (ArithWord w:{(Lit_Digits 1)})
            )
        )
        (C {(die)} {(DQ ("ERROR: use at most one of -p, -L, or filter."))})
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (DParen
          child: 
            (ArithBinary
              op_id: Arith_DAmp
              left: (ArithVarRef name:opt_duration)
              right: (ArithVarRef name:opt_view)
            )
        )
        (C {(die)} {(DQ ("ERROR: use either -d or -v."))})
      ]
      op_id: Op_DAmp
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_pid)) terminator:<Op_Semi ";">)]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[743])]
              spids: [743]
            )
            (ForEach
              iter_name: tid
              iter_words: [{(/proc/) ($ VSub_Name "$pid") (/task/) (Lit_Other "*")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:filter)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_Name "$filter") (" || common_pid == ") 
                                (BracedVarSub
                                  token: <VSub_Name tid>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VOp1_DPound
                                      arg_word: {("*") (Lit_Slash /)}
                                    )
                                  spids: [770 775]
                                )
                              )
                            }
                          spids: [766]
                        )
                      ]
                      spids: [766]
                    )
                  ]
                  spids: [763 779]
                )
              spids: [756 761]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:filter)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name filter>
                        suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)}))
                        spids: [783 787]
                      )
                    }
                  spids: [782]
                )
              ]
              spids: [782]
            )
          ]
          spids: [-1 736]
        )
      ]
      spids: [-1 792]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_tid)) terminator:<Op_Semi ";">)]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[807])]
              spids: [807]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:filter)
                  op: Equal
                  rhs: {(DQ ("common_pid == ") ($ VSub_Name "$tid"))}
                  spids: [811]
                )
              ]
              spids: [811]
            )
          ]
          spids: [-1 804]
        )
      ]
      spids: [-1 817]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_DAmp
                      left: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_view))
                      right: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_list))
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DParen child:(ArithVarRef name:opt_duration))
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ("Tracing ") ($ VSub_Name "$tpoint") (" for ") ($ VSub_Name "$duration") 
                          (" seconds (buffered)...")
                        )
                      }
                    )
                  ]
                  spids: [-1 848]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ("Tracing ") ($ VSub_Name "$tpoint") (". Ctrl-C to end."))})
              ]
              spids: [862 874]
            )
          ]
          spids: [-1 835]
        )
      ]
      spids: [-1 876]
    )
    (AndOr
      children: [
        (C {(cd)} {($ VSub_Name "$tracing")})
        (C {(die)} 
          {
            (DQ ("ERROR: accessing tracing. Root user? Kernel has FTRACE?\n") 
              ("    debugfs mounted? (mount -t debugfs debugfs /sys/kernel/debug)")
            )
          }
        )
      ]
      op_id: Op_DPipe
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_list)) terminator:<Op_Semi ";">)]
          action: [
            (C {(cd)} {(events)})
            (ForEach
              iter_name: tp
              iter_words: [{(Lit_Other "*") (/) (Lit_Other "*")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      children: [
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_f child:{($ VSub_Name "$tp")})
                        )
                        (ControlFlow token:<ControlFlow_Continue continue>)
                      ]
                      op_id: Op_DAmp
                    )
                    (C {(echo)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name tp>
                          suffix_op: 
                            (PatSub
                              pat: {(EscapedLiteralPart token:<Lit_EscapedChar "\\/">)}
                              replace: {(":")}
                              do_all: False
                              do_prefix: False
                              do_suffix: False
                            )
                          spids: [950 956]
                        )
                      }
                    )
                  ]
                  spids: [928 959]
                )
              spids: [922 926]
            )
            (C {(exit)})
          ]
          spids: [-1 909]
        )
      ]
      spids: [-1 964]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tdir)
          op: Equal
          rhs: 
            {(events/) 
              (BracedVarSub
                token: <VSub_Name tpoint>
                suffix_op: 
                  (PatSub
                    pat: {(":")}
                    replace: {(EscapedLiteralPart token:<Lit_EscapedChar "\\/">)}
                    do_all: False
                    do_prefix: False
                    do_suffix: False
                  )
                spids: [972 978]
              )
            }
          spids: [970]
        )
      ]
      spids: [970]
    )
    (AndOr
      children: [
        (DBracket expr:(BoolUnary op_id:BoolUnary_e child:{($ VSub_Name "$tdir")}))
        (C {(die)} {(DQ ("ERROR: tracepoint ") ($ VSub_Name "$tpoint") (" not found. Exiting"))})
      ]
      op_id: Op_DPipe
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_view)) terminator:<Op_Semi ";">)]
          action: [(C {(cat)} {($ VSub_Name "$tdir") (/format)}) (C {(exit)})]
          spids: [-1 1012]
        )
      ]
      spids: [-1 1023]
    )
    (AndOr
      children: [
        (DBracket expr:(BoolUnary op_id:BoolUnary_e child:{($ VSub_Name "$flock")}))
        (C {(die)} 
          {
            (DQ ("ERROR: ftrace may be in use by PID ") 
              (CommandSubPart
                command_list: (CommandList children:[(C {(cat)} {($ VSub_Name "$flock")})])
                left_token: <Left_CommandSub "$(">
                spids: [1043 1047]
              ) (" ") ($ VSub_Name "$flock")
            )
          }
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(echo)} {($ VSub_Dollar "$$")}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name "$flock")} spids:[1056])]
        )
        (C {(die)} {(DQ ("ERROR: unable to write ") ($ VSub_Name "$flock") (.))})
      ]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(1)} spids:[1070])]
      spids: [1070]
    )
    (SimpleCommand
      words: [{(echo)} {(nop)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(current_tracer)} spids:[1081])]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DParen child:(ArithVarRef name:opt_filter))
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{(echo)} {(DQ ($ VSub_Name "$filter"))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: -1
                                  arg_word: {($ VSub_Name "$tdir") (/filter)}
                                  spids: [1108]
                                )
                              ]
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(edie)} {(DQ ("ERROR: setting filter or -p. Exiting."))})]
                  spids: [-1 1114]
                )
              ]
              spids: [-1 1124]
            )
          ]
          spids: [-1 1095]
        )
      ]
      spids: [-1 1126]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_stack)) terminator:<Op_Semi ";">)]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [{(echo)} {(1)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: -1
                                  arg_word: {(options/stacktrace)}
                                  spids: [1149]
                                )
                              ]
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(edie)} {(DQ ("ERROR: enabling stack traces (-s). Exiting"))})]
                  spids: [-1 1154]
                )
              ]
              spids: [-1 1164]
            )
          ]
          spids: [-1 1138]
        )
      ]
      spids: [-1 1166]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(1)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: -1
                          arg_word: {($ VSub_Name "$tdir") (/enable)}
                          spids: [1176]
                        )
                      ]
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(edie)} {(DQ ("ERROR: enabling tracepoint ") ($ VSub_Name "$tprobe") (". Exiting."))})
          ]
          spids: [-1 1182]
        )
      ]
      spids: [-1 1193]
    )
    (C {(warn)} {(DQ ("echo > trace"))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DParen child:(ArithVarRef name:opt_duration))
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(sleep)} {($ VSub_Name "$duration")})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DParen child:(ArithVarRef name:opt_headers))
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(cat)} {(trace)})]
                  spids: [-1 1233]
                )
              ]
              else_action: [(C {(grep)} {(-v)} {(SQ <"^#">)} {(trace)})]
              spids: [1241 1255]
            )
          ]
          spids: [-1 1215]
        )
      ]
      else_action: [
        (AndOr
          children: [(DParen child:(ArithVarRef name:opt_headers)) (C {(cat)} {(trace)})]
          op_id: Op_DAmp
        )
        (C {(cat)} {(trace_pipe)})
      ]
      spids: [1257 1282]
    )
    (C {(end)})
  ]
)