(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tempfile)
          op: assign_op.Equal
          rhs: {(DQ <'/tmp/available.'> ($ Id.VSub_Dollar '$$'))}
          spids: [11]
        )
      ]
    )
    (C {<trap>} {(DQ <'rm -f '> ($ Id.VSub_DollarName '$tempfile'))} {<EXIT>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 45
              stdin_parts: [
                <'    { sum += $4 }\n'>
                <'END { mb = sum / 1024\n'>
                <'      gb = mb / 1024\n'>
                <'      printf "%.0f MB (%.2fGB) of available disk space\\n", mb, gb\n'>
                <'    }\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$tempfile')}
        )
      ]
      do_fork: T
    )
    (command.Pipeline
      children: [(C {<df>} {<-k>}) (C {<awk>} {<-f>} {($ Id.VSub_DollarName '$tempfile')})]
      negated: F
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)