(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: <Id.KW_While while>
          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: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.Simple
                          words: [{<sed>} {<-e>} {(SQ <'s/[ \t]*$//g'>)}]
                          redirects: [
                            (redir.Redir
                              op: <Id.Redir_Less '<'>
                              fd: -1
                              arg_word: {($ Id.VSub_DollarName '$file')}
                            )
                            (redir.Redir
                              op: <Id.Redir_Great '>'>
                              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: <Id.Op_Semi _>
                                )
                              ]
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (C {<cmp>} {<-s>} {($ Id.VSub_DollarName '$file')} 
                                              {($ Id.VSub_DollarName '$temp')}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                      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')})
  ]
)