(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'duration='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'duration='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'duration='> name:duration)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'buckets='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'buckets='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'buckets='> name:buckets)
          op: assign_op.Equal
          rhs: 
            {
              (ShArrayLiteral
                left: <Id.Op_LParen _>
                words: [{<1>} {<8>} {<64>} {<128>}]
                right: <Id.Right_ShArrayLiteral _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'secsz='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'secsz='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'secsz='> name:secsz)
          op: assign_op.Equal
          rhs: {<512>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {(SQ <':'>)} {<INT>} {<QUIT>} {<TERM>} {<PIPE>} {<HUP>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <usage>
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<END>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'USAGE: bitesize [-h] [-b buckets] [seconds]\n'>
                        <'                 -b buckets      # specify histogram buckets (Kbytes)\n'>
                        <'                 -h              # this usage message\n'>
                        <'   eg,\n'>
                        <'       bitesize                  # trace I/O size until Ctrl-C\n'>
                        <'       bitesize 10               # trace I/O size for 10 seconds\n'>
                        <'       bitesize -b '>
                        <Id.Right_DoubleQuote '"'>
                        <'8 16 32'>
                        <Id.Right_DoubleQuote '"'>
                        <'     # specify custom bucket points\n'>
                      ]
                    )
                )
                (Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <die>
      name: die
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Simple
              blame_tok: <getopts>
              more_env: []
              words: [{<getopts>} {<b> <Id.Lit_Colon ':'> <h>} {<opt>}]
              redirects: []
              do_fork: T
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName opt)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <b>
                  pattern: (pat.Words words:[{<b>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'buckets='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'buckets='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'buckets='> name:buckets)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [{($ Id.VSub_DollarName OPTARG)}]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <h>
                  pattern: (pat.Words words:[{<h>} {<Id.Lit_QMark '?'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Simple
      blame_tok: <shift>
      more_env: []
      words: [
        {<shift>}
        {
          (word_part.ArithSub
            left: <Id.Left_DollarDParen '$(('>
            anode: 
              (arith_expr.Binary
                op_id: Id.Arith_Minus
                left: {($ Id.VSub_DollarName OPTIND)}
                right: {<Id.Lit_Digits 1>}
              )
            right: <Id.Right_DollarDParen _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'tpoint='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'tpoint='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoint='> name:tpoint)
          op: assign_op.Equal
          rhs: {<block> <Id.Lit_Colon ':'> <block_rq_issue>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'var='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'var='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'var='> name:var)
          op: assign_op.Equal
          rhs: {<nr_sector>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'duration='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'duration='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'duration='> name:duration)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number 1)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'i='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'i='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'sectors='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'sectors='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sectors='> name:sectors)
          op: assign_op.Equal
          rhs: 
            {
              (ShArrayLiteral
                left: <Id.Op_LParen _>
                words: [
                  {
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name buckets>
                      var_name: buckets
                      bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  }
                ]
                right: <Id.Right_ShArrayLiteral _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.DParen
      left: <Id.Op_DLeftParen _>
      child: 
        (arith_expr.BinaryAssign
          op_id: Id.Arith_Equal
          left: ($ Id.Lit_ArithVarLike max_i)
          right: 
            (arith_expr.Binary
              op_id: Id.Arith_Minus
              left: 
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name buckets>
                    var_name: buckets
                    prefix_op: <Id.VSub_Pound '#'>
                    bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              right: {<Id.Lit_Digits 1>}
            )
        )
      right: <Id.Op_DRightParen _>
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (command.DParen
                  left: <Id.Op_DLeftParen _>
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_LessEqual
                      left: ($ Id.Lit_ArithVarLike i)
                      right: ($ Id.Lit_ArithVarLike max_i)
                    )
                  right: <Id.Op_DRightParen _>
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.DParen
              left: <Id.Op_DLeftParen _>
              child: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: 
                    (arith_expr.Binary
                      op_id: Id.Arith_LBracket
                      left: ($ Id.Lit_ArithVarLike sectors)
                      right: {($ Id.VSub_DollarName i)}
                    )
                  right: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Slash
                      left: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Star
                          left: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name sectors>
                                var_name: sectors
                                bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          right: {<Id.Lit_Digits 1024>}
                        )
                      right: {($ Id.VSub_DollarName secsz)}
                    )
                )
              right: <Id.Op_DRightParen _>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Great
                                  left: ($ Id.Lit_ArithVarLike i)
                                  right: {<Id.Lit_Digits 0>}
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      left: <Id.Op_DLeftParen _>
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_LessEqual
                                          left: 
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name sectors>
                                                var_name: sectors
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName i)}
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            }
                                          right: 
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name sectors>
                                                var_name: sectors
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: 
                                                      (arith_expr.Binary
                                                        op_id: Id.Arith_Minus
                                                        left: {($ Id.VSub_DollarName i)}
                                                        right: {<Id.Lit_Digits 1>}
                                                      )
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            }
                                        )
                                      right: <Id.Op_DRightParen _>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <die>
                              more_env: []
                              words: [{<die>} {(DQ <'ERROR: bucket list must increase in size.'>)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [398 426]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [382 395]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.DParen
              left: <Id.Op_DLeftParen _>
              child: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
              right: <Id.Op_DRightParen _>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'max_b='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'max_b='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'max_b='> name:max_b)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name buckets>
                var_name: buckets
                bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName max_i)})
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'max_s='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'max_s='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'max_s='> name:max_s)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name sectors>
                var_name: sectors
                bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName max_i)})
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'tpoints='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'tpoints='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoints='> name:tpoints)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'-e '> ($ Id.VSub_DollarName tpoint) <' --filter '> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName var) <' < '> 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name sectors>
                  var_name: sectors
                  bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                  right: <Id.Right_DollarBrace '}'>
                ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'awkarray='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'awkarray='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'awkarray='> name:awkarray)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'i='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'i='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (command.DParen
                  left: <Id.Op_DLeftParen _>
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: ($ Id.Lit_ArithVarLike i)
                      right: ($ Id.Lit_ArithVarLike max_i)
                    )
                  right: <Id.Op_DRightParen _>
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'tpoints='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'tpoints='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoints='> name:tpoints)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName tpoints) <' -e '> ($ Id.VSub_DollarName tpoint) 
                        <' --filter '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName var) <' >= '> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name sectors>
                          var_name: sectors
                          bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)})
                          right: <Id.Right_DollarBrace '}'>
                        ) <' && '>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'tpoints='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'tpoints='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoints='> name:tpoints)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName tpoints) <' '> ($ Id.VSub_DollarName var) <' < '> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name sectors>
                          var_name: sectors
                          bracket_op: 
                            (bracket_op.ArrayIndex
                              expr: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Plus
                                  left: {($ Id.VSub_DollarName i)}
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          right: <Id.Right_DollarBrace '}'>
                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'awkarray='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'awkarray='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'awkarray='> name:awkarray)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName awkarray) <' buckets['> ($ Id.VSub_DollarName i) <']='> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name buckets>
                          var_name: buckets
                          bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)})
                          right: <Id.Right_DollarBrace '}'>
                        ) <';'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.DParen
              left: <Id.Op_DLeftParen _>
              child: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
              right: <Id.Op_DRightParen _>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'awkarray='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'awkarray='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'awkarray='> name:awkarray)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName awkarray) <' buckets['> ($ Id.VSub_DollarName max_i) <']='> 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name buckets>
                  var_name: buckets
                  bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName max_i)})
                  right: <Id.Right_DollarBrace '}'>
                ) <';'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'tpoints='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'tpoints='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tpoints='> name:tpoints)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName tpoints) <' -e '> ($ Id.VSub_DollarName tpoint) <' --filter '> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ($ Id.VSub_DollarName var) <' >= '> 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name sectors>
                  var_name: sectors
                  bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName max_i)})
                  right: <Id.Right_DollarBrace '}'>
                ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: ($ Id.Lit_ArithVarLike duration)
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'etext='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'etext='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'etext='> name:etext)
                  op: assign_op.Equal
                  rhs: {(DQ <'for '> ($ Id.VSub_DollarName duration) <' seconds'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'cmd='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'cmd='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd)
                  op: assign_op.Equal
                  rhs: {(DQ <'sleep '> ($ Id.VSub_DollarName duration))}
                )
              ]
              redirects: []
            )
          ]
          spids: [613 623]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'etext='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'etext='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'etext='> name:etext)
              op: assign_op.Equal
              rhs: {(DQ <'until Ctrl-C'>)}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'cmd='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'cmd='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd)
              op: assign_op.Equal
              rhs: {(DQ <'sleep 999999'>)}
            )
          ]
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Tracing block I/O size (bytes), '> ($ Id.VSub_DollarName etext) <...>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'out='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'out='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out)
          op: assign_op.Equal
          rhs: {(DQ <'-o /dev/stdout'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'stat='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'stat='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stat='> name:stat)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <eval>
                    more_env: []
                    words: [
                      {<eval>}
                      {<perf>}
                      {<stat>}
                      {($ Id.VSub_DollarName tpoints)}
                      {<-a>}
                      {($ Id.VSub_DollarName out)}
                      {($ Id.VSub_DollarName cmd)}
                    ]
                    redirects: [(Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})]
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_NEqual
                          left: {($ Id.VSub_QMark '?')}
                          right: {<Id.Lit_Digits 0>}
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'ERROR running perf:'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName stat))}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
          ]
          spids: [696 710]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'most='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'most='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'most='> name:most)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <echo>
                        more_env: []
                        words: [{<echo>} {(DQ ($ Id.VSub_DollarName stat))}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <awk>
                        more_env: []
                        words: [
                          {<awk>}
                          {<-v>}
                          {<Id.Lit_VarLike 'tpoint='> ($ Id.VSub_DollarName tpoint)}
                          {
                            (SQ <'\n'> <'\t$2 == tpoint { gsub(/,/, ""); if ($1 > m) { m = $1 } }\n'> 
                              <'\tEND { print m }'>
                            )
                          }
                        ]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _>]
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(DQ ($ Id.VSub_DollarName stat))}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <awk>
          more_env: []
          words: [
            {<awk>}
            {<-v>}
            {<Id.Lit_VarLike 'tpoint='> ($ Id.VSub_DollarName tpoint)}
            {<-v>}
            {<Id.Lit_VarLike 'max_i='> ($ Id.VSub_DollarName max_i)}
            {<-v>}
            {<Id.Lit_VarLike 'most='> ($ Id.VSub_DollarName most)}
            {
              (SQ <'\n'> <'\tfunction star(sval, smax, swidth) {\n'> <'\t\tstars = ""\n'> 
                <'\t\t# using int could avoid error on gawk\n'> <'\t\tif (int(smax) == 0) return ""\n'> <'\t\tfor (si = 0; si < (swidth * sval / smax); si++) {\n'> 
                <'\t\t\tstars = stars "#"\n'> <'\t\t}\n'> <'\t\treturn stars\n'> <'\t}\n'> <'\tBEGIN {\n'> <'\t\t'>
              ) (DQ ($ Id.VSub_DollarName awkarray)) 
              (SQ <'\n'> <'\t\tprintf("            %-15s: %-8s %s\\n", "Kbytes", "I/O",\n'> 
                <'\t\t    "Distribution")\n'> <'\t}\n'> <'\t/Performance counter stats/ { i = -1 }\n'> 
                <'\t# reverse order of rule set is important\n'> <'\t{ ok = 0 }\n'> <'\t$2 == tpoint { num = $1; gsub(/,/, "", num); ok = 1 }\n'> 
                <'\tok && i >= max_i {\n'> <'\t\tprintf("   %10.1f -> %-10s: %-8s |%-38s|\\n",\n'> 
                <'\t\t    buckets[i], "", num, star(num, most, 38))\n'> <'\t\tnext\n'> <'\t}\n'> <'\tok && i >= 0 && i < max_i {\n'> 
                <'\t\tprintf("   %10.1f -> %-10.1f: %-8s |%-38s|\\n",\n'> <'\t\t    buckets[i], buckets[i+1] - 0.1, num,\n'> <'\t\t    star(num, most, 38))\n'> <'\t\ti++\n'> 
                <'\t\tnext\n'> <'\t}\n'> <'\tok && i == -1 {\n'> <'\t\tprintf("   %10s -> %-10.1f: %-8s |%-38s|\\n", "",\n'> 
                <'\t\t    buckets[0] - 0.1, num, star(num, most, 38))\n'> <'\t\ti++\n'> <'\t}\n'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
  ]
)