(CommandList
  children: [
    (C {(set)} {(-e)})
    (C {(export)} {(Lit_VarLike 'LC_ALL=') (C)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-lt)} {(3)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ ('usage: ') ($ VSub_Number '$0') (' OLD-FILE NEW-FILE FILES-TO-BE-PATCHED...'))}
              ]
              redirects: [(Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(2)})
          ]
          spids: [16777215 78]
        )
      ]
      spids: [16777215 97]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:old_file)
          op: Equal
          rhs: {(DQ ($ VSub_Number '$1'))}
          spids: [100]
        )
      ]
      spids: [100]
    )
    (C {(shift)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:new_file)
          op: Equal
          rhs: {(DQ ($ VSub_Number '$1'))}
          spids: [107]
        )
      ]
      spids: [107]
    )
    (C {(shift)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tmp_old_sorted)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(mktemp)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [117 119]
                )
              )
            }
          spids: [115]
        )
      ]
      spids: [115]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tmp_new_sorted)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(mktemp)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [124 126]
                )
              )
            }
          spids: [122]
        )
      ]
      spids: [122]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tmp_new_symbols)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(mktemp)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [131 133]
                )
              )
            }
          spids: [129]
        )
      ]
      spids: [129]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tmp_patched)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(mktemp)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [138 140]
                )
              )
            }
          spids: [136]
        )
      ]
      spids: [136]
    )
    (FuncDef
      name: cleanup
      body: 
        (BraceGroup
          children: [
            (C {(rm)} {(-f)} {(--)} {(DQ ($ VSub_Name '$tmp_old_sorted'))} 
              {(DQ ($ VSub_Name '$tmp_new_sorted'))} {(DQ ($ VSub_Name '$tmp_new_symbols'))} {(DQ ($ VSub_Name '$tmp_patched'))}
            )
          ]
          spids: [149]
        )
      spids: [144 148]
    )
    (C {(trap)} {(cleanup)} {(0)})
    (C {(sort)} {(-u)} {(-o)} {(DQ ($ VSub_Name '$tmp_old_sorted'))} {(--)} {(DQ ($ VSub_Name '$old_file'))})
    (C {(sort)} {(-u)} {(-o)} {(DQ ($ VSub_Name '$tmp_new_sorted'))} {(--)} {(DQ ($ VSub_Name '$new_file'))})
    (SimpleCommand
      words: [
        {(comm)}
        {(-1)}
        {(-3)}
        {(DQ ($ VSub_Name '$tmp_old_sorted'))}
        {(DQ ($ VSub_Name '$tmp_new_sorted'))}
      ]
      redirects: [
        (Redir
          op: <Redir_Great '>'>
          fd: 16777215
          arg_word: {(DQ ($ VSub_Name '$tmp_new_symbols'))}
        )
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:new_symbol_count)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (SimpleCommand
                          words: [{(wc)} {(-l)}]
                          redirects: [
                            (Redir
                              op: <Redir_Less '<'>
                              fd: 16777215
                              arg_word: {(DQ ($ VSub_Name '$tmp_new_symbols'))}
                            )
                          ]
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [248 258]
                )
              )
            }
          spids: [246]
        )
      ]
      spids: [246]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$new_symbol_count'))} {(-eq)} {(0)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DQ ('info: no symbols added'))}]
              redirects: [(Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
          spids: [16777215 276]
        )
      ]
      spids: [16777215 293]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ('info: ') ($ VSub_Name '$new_symbol_count') (' symbol(s) added'))}]
      redirects: [(Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
    )
    (ForEach
      iter_name: to_be_patched
      iter_words: [{(DQ ($ VSub_At '$@'))}]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (C {(sort)} {(-u)} {(-o)} {(DQ ($ VSub_Name '$tmp_patched'))} {(--)} 
              {(DQ ($ VSub_Name '$to_be_patched'))} {(DQ ($ VSub_Name '$tmp_new_symbols'))}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C {(cmp)} {(-s)} {(--)} {(DQ ($ VSub_Name '$to_be_patched'))} 
                              {(DQ ($ VSub_Name '$tmp_patched'))}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('info: updating ') ($ VSub_Name '$to_be_patched'))}]
                      redirects: [(Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})]
                    )
                    (C {(cp)} {(--)} {(DQ ($ VSub_Name '$tmp_patched'))} 
                      {(DQ ($ VSub_Name '$to_be_patched'))}
                    )
                  ]
                  spids: [16777215 363]
                )
              ]
              spids: [16777215 390]
            )
          ]
          spids: [320 392]
        )
      spids: [313 318]
    )
  ]
)