(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (2))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Subshell
              child: 
                (C {(echo)} 
                  {
                    (DQ ('\n') ('Usage: ') 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Number '$0')})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [68 72]
                      ) (' <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 op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[99])]
              spids: [60 97]
            )
            (C {(exit)} {(1)})
          ]
          spids: [16777215 57]
        )
      ]
      spids: [16777215 107]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:size) op:Equal rhs:{($ VSub_Number '$1')} spids:[110])]
      spids: [110]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:file)
          op: Equal
          rhs: {(DQ ($ VSub_Number '$2'))}
          spids: [113]
        )
      ]
      spids: [113]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:error)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [
                          {(dd)}
                          {(Lit_VarLike 'bs=') (1)}
                          {(Lit_VarLike 'seek=') ($ VSub_Name '$size')}
                          {(Lit_VarLike 'if=') (/dev/null)}
                          {(Lit_VarLike 'of=') (DQ ($ VSub_Name '$file'))}
                        ]
                        redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[137])]
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [120 139]
              )
            }
          spids: [119]
        )
      ]
      spids: [119]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ret) op:Equal rhs:{($ VSub_QMark '$?')} spids:[141])]
      spids: [141]
    )
    (Pipeline
      children: [
        (C {(echo)} {(DQ ($ VSub_Name '$error'))})
        (SimpleCommand
          words: [{(grep)} {(-v)} {(DQ ('^0'))}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[160])]
        )
      ]
      negated: False
    )
    (C {(exit)} {($ VSub_Name '$ret')})
  ]
)