(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BAK)
          op: assign_op.Equal
          rhs: {<save> ($ Id.VSub_Dollar '$$')}
          spids: [114]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TMP)
          op: assign_op.Equal
          rhs: {<edit> ($ Id.VSub_Dollar '$$')}
          spids: [118]
        )
      ]
    )
    (C {<trap>} {(DQ <'rm -f '> ($ Id.VSub_DollarName '$BAK') <' '> ($ Id.VSub_DollarName '$TMP'))} 
      {<0>} {<1>} {<2>} {<5>} {<15>}
    )
    (command.ForEach
      iter_names: [name]
      iterable: 
        (for_iter.Words
          words: [{<HAVE_TCGETATTR>} {<HAVE_TERMIOS_H>} {<HAVE_TERMIO_H>} {<BROKEN_LINKER>}]
        )
      body: 
        (command.DoGroup
          children: [
            (C {<mv>} {($ Id.VSub_Number '$2')} {($ Id.VSub_DollarName '$BAK')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Subshell
                          child: 
                            (command.Simple
                              words: [
                                {<grep>}
                                {(DQ <'[ \t]'> ($ Id.VSub_DollarName '$name') <'[ \t]'>)}
                                {($ Id.VSub_Number '$1')}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName '$TMP')}
                                )
                              ]
                              do_fork: T
                            )
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:value)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [199]
                        )
                      ]
                    )
                  ]
                  spids: [173 196]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:value)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [206]
                    )
                  ]
                )
              ]
            )
            (C {<echo>} {(SQ <'** edit: '>) ($ Id.VSub_DollarName '$name')} 
              {($ Id.VSub_DollarName '$value')}
            )
            (command.Simple
              words: [
                {<sed>}
                {<-e>}
                {
                  (DQ <'s@#define '> (${ Id.VSub_Name name) <'.*'> 
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'@#define '> ($ Id.VSub_DollarName '$name') <' '> ($ Id.VSub_DollarName '$value') <'@'>
                  )
                }
                {<-e>}
                {
                  (DQ <'s@#if '> ($ Id.VSub_DollarName '$name') 
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'@#if '> ($ Id.VSub_DollarName '$value') <' /* '> ($ Id.VSub_DollarName '$name') <' */@'>
                  )
                }
                {<-e>}
                {
                  (DQ <'s@#if !'> ($ Id.VSub_DollarName '$name') 
                    (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'@#if '> ($ Id.VSub_DollarName '$value') <' /* !'> ($ Id.VSub_DollarName '$name') <' */@'>
                  )
                }
                {($ Id.VSub_DollarName '$BAK')}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number '$2')}
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Subshell
                          child: 
                            (C {<cmp>} {<-s>} {($ Id.VSub_Number '$2')} {($ Id.VSub_DollarName '$BAK')})
                        )
                      ]
                    )
                  action: [(C {<mv>} {($ Id.VSub_DollarName '$BAK')} {($ Id.VSub_Number '$2')})]
                  spids: [281 294]
                )
              ]
              else_action: [(C {<rm>} {<-f>} {($ Id.VSub_DollarName '$BAK')})]
            )
          ]
        )
    )
  ]
)