(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <usage>
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <basename>
                          more_env: []
                          words: [{<basename>} {($ Id.VSub_Number 0)}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    ) <' file|device string'>
                  )
                }
              ]
              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.ShAssignment
      left: <Id.Lit_VarLike 'COLUMNS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'COLUMNS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COLUMNS='> name:COLUMNS)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <tput>
                    more_env: []
                    words: [{<tput>} {<cols>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <progress>
      name: progress
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'DONE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'DONE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DONE='> name:DONE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Slash
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Star
                                left: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: {($ Id.VSub_DollarName COLUMNS)}
                                    right: {<Id.Lit_Digits 2>}
                                  )
                                right: {($ Id.VSub_Number 1)}
                              )
                            right: {<Id.Lit_Digits 100>}
                          )
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TODO='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TODO='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TODO='> name:TODO)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Minus
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Minus
                                left: {($ Id.VSub_DollarName COLUMNS)}
                                right: {<Id.Lit_Digits 2>}
                              )
                            right: {($ Id.VSub_DollarName DONE)}
                          )
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'DONE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'DONE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DONE='> name:DONE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <printf>
                                more_env: []
                                words: [{<printf>} {(DQ <'%'> (${ Id.VSub_Name DONE) <s>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <tr>
                                more_env: []
                                words: [{<tr>} {(SQ <' '>)} {<Id.Lit_Equals '='>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TODO='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TODO='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TODO='> name:TODO)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <printf>
                                more_env: []
                                words: [{<printf>} {(DQ <'%'> (${ Id.VSub_Name TODO) <s>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <tr>
                                more_env: []
                                words: [{<tr>} {(SQ <' '>)} {<->}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {
                  (DQ <'['> ($ Id.VSub_DollarName DONE) ($ Id.VSub_DollarName TODO) <']'> 
                    <Id.Lit_BadBackslash '\\'> <r>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/tty'>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <print>
      name: print
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'CLEAR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'CLEAR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CLEAR='> name:CLEAR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <printf>
                            more_env: []
                            words: [{<printf>} {(DQ <'%'> (${ Id.VSub_Name COLUMNS) <s>)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ ($ Id.VSub_DollarName CLEAR) <Id.Lit_BadBackslash '\\'> <r>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [{<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-ne>} {<2>} {<Id.Lit_RBracket ']'>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <usage>
          more_env: []
          words: [{<usage>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'DISK='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'DISK='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DISK='> name:DISK)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number 1))}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'STRING='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'STRING='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STRING='> name:STRING)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number 2))}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <export>
      more_env: []
      words: [{<export>} {<Id.Lit_VarLike 'LANG='> <C>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'CHUNK_SIZE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'CHUNK_SIZE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHUNK_SIZE='> name:CHUNK_SIZE)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                left: <Id.Left_DollarDParen '$(('>
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Star
                    left: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Star
                        left: {<Id.Lit_Digits 8>}
                        right: {<Id.Lit_Digits 1024>}
                      )
                    right: {<Id.Lit_Digits 1024>}
                  )
                right: <Id.Right_DollarDParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-b>}
                        {(DQ ($ Id.VSub_DollarName DISK))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'SIZE='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'SIZE='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SIZE='> name:SIZE)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <'/sbin/blockdev'>
                                more_env: []
                                words: [
                                  {<'/sbin/blockdev'>}
                                  {<--getsize64>}
                                  {($ Id.VSub_DollarName DISK)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_QMark '?')}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          spids: [290 303]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.AndOr
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SIZE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SIZE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SIZE='> name:SIZE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <stat>
                            more_env: []
                            words: [
                              {<stat>}
                              {<--format>}
                              {<Id.Lit_Other '%'> <s>}
                              {(DQ ($ Id.VSub_DollarName DISK))}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_QMark '?')}
            )
          ]
          ops: [<Id.Op_DPipe _>]
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {($ Id.VSub_DollarName SIZE)}
            {<-eq>}
            {<0>}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'CHUNKS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'CHUNKS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHUNKS='> name:CHUNKS)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                left: <Id.Left_DollarDParen '$(('>
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Slash
                    left: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Minus
                        left: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: {($ Id.VSub_DollarName SIZE)}
                            right: {($ Id.VSub_DollarName CHUNK_SIZE)}
                          )
                        right: {<Id.Lit_Digits 1>}
                      )
                    right: {($ Id.VSub_DollarName CHUNK_SIZE)}
                  )
                right: <Id.Right_DollarDParen _>
              )
            }
        )
      ]
      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.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Simple
              blame_tok: <progress>
              more_env: []
              words: [
                {<progress>}
                {
                  (word_part.ArithSub
                    left: <Id.Left_DollarDParen '$(('>
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Slash
                        left: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Star
                            left: {($ Id.VSub_DollarName i)}
                            right: {<Id.Lit_Digits 100>}
                          )
                        right: {($ Id.VSub_DollarName CHUNKS)}
                      )
                    right: <Id.Right_DollarDParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_DollarName i))}
                    {<-ge>}
                    {(DQ ($ Id.VSub_DollarName CHUNKS))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Break break>)
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <dd>
                  more_env: []
                  words: [
                    {<dd>}
                    {<Id.Lit_VarLike 'if='> ($ Id.VSub_DollarName DISK)}
                    {<Id.Lit_VarLike 'iflag='> <direct>}
                    {<Id.Lit_VarLike 'conv='> <noerror>}
                    {<Id.Lit_VarLike 'bs='> ($ Id.VSub_DollarName CHUNK_SIZE)}
                    {<Id.Lit_VarLike 'count='> <1>}
                    {<Id.Lit_VarLike 'skip='> ($ Id.VSub_DollarName i)}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [
                    {<grep>}
                    {<--binary-files> <Id.Lit_Equals '='> <text>}
                    {<-U>}
                    {<-F>}
                    {(DQ ($ Id.VSub_DollarName STRING))}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'status='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'status='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <echo>
                            more_env: []
                            words: [
                              {<echo>}
                              {
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name PIPESTATUS>
                                  var_name: PIPESTATUS
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'dd_status='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'dd_status='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dd_status='> name:dd_status)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {($ Id.VSub_DollarName status)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <cut>
                                more_env: []
                                words: [{<cut>} {<-f1>} {<-d>} {(SQ <' '>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 're_status='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 're_status='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 're_status='> name:re_status)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {($ Id.VSub_DollarName status)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <cut>
                                more_env: []
                                words: [{<cut>} {<-f2>} {<-d>} {(SQ <' '>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {($ Id.VSub_DollarName dd_status)}
                    {<-ne>}
                    {<0>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'dd error'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Exit exit>
                          arg_word: {($ Id.VSub_DollarName dd_status)}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {($ Id.VSub_DollarName re_status)}
                    {<-eq>}
                    {<0>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [
                            {<print>}
                            {
                              (DQ <'dd if='> ($ Id.VSub_DollarName DISK) <' iflag=direct bs='> 
                                ($ Id.VSub_DollarName CHUNK_SIZE) <' count=1 skip='> ($ Id.VSub_DollarName i) <' > disk_grep.'> ($ Id.VSub_DollarName i)
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (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: 
                    {
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: {($ Id.VSub_DollarName i)}
                            right: {<Id.Lit_Digits 1>}
                          )
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
  ]
)