(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '$#'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <2>)} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Subshell
              command_list: 
                (command.CommandList
                  children: [
                    (C {<echo>} 
                      {
                        (DQ <'\n'> <'Usage: '> 
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            command_list: 
                              (command.CommandList
                                children: [(C {<basename>} {($ Id.VSub_Number '$0')})]
                              )
                          ) <' <size> <path>\n'> <'\n'> <'Truncate the <path> to exactly <size> bytes.\n'> <'\n'> 
                          <"If <path> doesn't exist it is created.\n"> <'\n'> <'<size> is a number which may be optionally followed\n'> 
                          <'by the following multiplicative suffixes:\n'> <'  b              512\n'> <'  KB            1000\n'> <'  K             1024\n'> 
                          <'  MB       1000*1000\n'> <'  M        1024*1024\n'> <'and so on for G, T, P, E, Z, Y\n'> <'\n'> 
                          <'If the file previously was larger than this size, the extra data is\n'> <'lost. If the file previously was shorter, it is extended\n'> 
                          <'and the extended part reads as zero bytes. Note in both cases\n'> <'no data is written (if the filesystem supports holes in files).\n'> <'\n'> 
                          <'E.G.: truncate 2TB ext3.test\n'>
                        )
                      }
                    )
                  ]
                )
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [39 57]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:size)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [112]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:file)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$2'))}
          spids: [115]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:error)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Simple
                        words: [
                          {<dd>}
                          {<Id.Lit_VarLike 'bs='> <1>}
                          {<Id.Lit_VarLike 'seek='> ($ Id.VSub_DollarName '$size')}
                          {<Id.Lit_VarLike 'if='> </dev/null>}
                          {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$file'))}
                        ]
                        redirects: [(redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})]
                      )
                    ]
                  )
              )
            }
          spids: [121]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ret)
          op: assign_op.Equal
          rhs: {($ Id.VSub_QMark '$?')}
          spids: [145]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<echo>} {(DQ ($ Id.VSub_DollarName '$error'))})
        (command.Simple
          words: [{<grep>} {<-v>} {(DQ <'^0'>)}]
          redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
        )
      ]
      negated: F
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{($ Id.VSub_DollarName '$ret')})
  ]
)