(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:temp)
          op: assign_op.Equal
          rhs: {(/tmp/runsed) ($ Id.VSub_Dollar '$$')}
          spids: [41]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {(find)} {(DQ ($ Id.VSub_At '$@'))} {(-type)} {(f)} {(-print)})
        (command.WhileUntil
          keyword: (Token id:Id.KW_While val:while span_id:60)
          cond: [(C {(read)} {(file)})]
          body: 
            (command.DoGroup
              children: [
                (C {(echo)} {(-n)} {(DQ ('editing ') ($ Id.VSub_DollarName '$file') (': '))})
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: (C {(test)} {(-s)} {($ Id.VSub_DollarName '$file')})
                          terminator: (Token id:Id.Op_Semi val:';' span_id:87)
                        )
                      ]
                      action: [
                        (command.Simple
                          words: [
                            {(sed)}
                            {(-e)}
                            {(SQ (Token id:Id.Lit_Chars val:'s/[ \t]*$//g' span_id:97))}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Less val:'<' span_id:100)
                              fd: -1
                              arg_word: {($ Id.VSub_DollarName '$file')}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:103)
                              fd: -1
                              arg_word: {($ Id.VSub_DollarName '$temp')}
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: (C {(test)} {(-s)} {($ Id.VSub_DollarName '$temp')})
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:115)
                                )
                              ]
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (C {(cmp)} {(-s)} {($ Id.VSub_DollarName '$file')} 
                                              {($ Id.VSub_DollarName '$temp')}
                                            )
                                          terminator: (Token id:Id.Op_Semi val:';' span_id:129)
                                        )
                                      ]
                                      action: [(C {(echo)} {(-n)} {(DQ ('file not changed: '))})]
                                      spids: [120 131]
                                    )
                                  ]
                                  else_action: [
                                    (C {(cp)} {($ Id.VSub_DollarName '$temp')} 
                                      {($ Id.VSub_DollarName '$file')}
                                    )
                                  ]
                                )
                                (C {(echo)} {(DQ (done))})
                              ]
                              spids: [108 117]
                            )
                          ]
                          else_action: [(C {(echo)} {(DQ ('produced an empty file - aborting'))})]
                        )
                      ]
                      spids: [80 89]
                    )
                  ]
                  else_action: [(C {(echo)} {(DQ ('original file is empty.'))})]
                )
              ]
            )
        )
      ]
      negated: F
    )
    (C {(echo)} {(DQ ('all done'))})
    (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$temp')})
  ]
)