(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name LANGUAGE>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          )
                        )
                      } {<Id.Lit_Equals '='>} {<set>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LANGUAGE)
                      op: assign_op.Equal
                      rhs: {<C>}
                      spids: [130]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence child:(C {<export>} {<LANGUAGE>}) terminator:<Id.Op_Semi _>)
          ]
          spids: [111 128]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name LANG>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          )
                        )
                      } {<Id.Lit_Equals '='>} {<set>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LANG)
                      op: assign_op.Equal
                      rhs: {<C>}
                      spids: [160]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence child:(C {<export>} {<LANG>}) terminator:<Id.Op_Semi _>)
          ]
          spids: [141 158]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name LC_ALL>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          )
                        )
                      } {<Id.Lit_Equals '='>} {<set>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LC_ALL)
                      op: assign_op.Equal
                      rhs: {<C>}
                      spids: [190]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence child:(C {<export>} {<LC_ALL>}) terminator:<Id.Op_Semi _>)
          ]
          spids: [171 188]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name LC_MESSAGES>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          )
                        )
                      } {<Id.Lit_Equals '='>} {<set>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LC_MESSAGES)
                      op: assign_op.Equal
                      rhs: {<C>}
                      spids: [220]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (C {<export>} {<LC_MESSAGES>})
              terminator: <Id.Op_Semi _>
            )
          ]
          spids: [201 218]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name LC_CTYPE>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          )
                        )
                      } {<Id.Lit_Equals '='>} {<set>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LC_CTYPE)
                      op: assign_op.Equal
                      rhs: {<C>}
                      spids: [250]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence child:(C {<export>} {<LC_CTYPE>}) terminator:<Id.Op_Semi _>)
          ]
          spids: [231 248]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<test>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name LC_COLLATE>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<set>})
                          )
                        )
                      } {<Id.Lit_Equals '='>} {<set>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:LC_COLLATE)
                      op: assign_op.Equal
                      rhs: {<C>}
                      spids: [280]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: (C {<export>} {<LC_COLLATE>})
              terminator: <Id.Op_Semi _>
            )
          ]
          spids: [261 278]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:AWK)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Number 1>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<awk>})
              )
            }
          spids: [294]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DATA)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Number 2>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_Hyphen ->
                    arg_word: {<..> <Id.Lit_Slash '/'> <include> <Id.Lit_Slash '/'> <Caps>}
                  )
              )
            }
          spids: [301]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:data)
          op: assign_op.Equal
          rhs: {<Id.KW_Data data> ($ Id.VSub_Dollar '$$')}
          spids: [313]
        )
      ]
    )
    (C {<trap>} {(SQ <'rm -f $data'>)} {<1>} {<2>} {<5>} {<15>})
    (command.Simple
      words: [{<sed>} {<-e>} {(SQ <'s/[\t][\t]*/\t/g'>)}]
      redirects: [
        (redir
          op: <Id.Redir_Less '<'>
          loc: (redir_loc.Fd fd:0)
          arg: {($ Id.VSub_DollarName '$DATA')}
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$data')}
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DATA)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$data')}
          spids: [346]
        )
      ]
    )
    (command.Sentence child:(C {<echo>} {(DQ <'/*'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <' * termsort.c --- sort order arrays for use by infocmp.'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <' *'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: 
        (C {<echo>} {(DQ <' * Note: this file is generated using MKtermsort.sh, do not edit by hand.'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <' */'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx bool_terminfo_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "bool"    {printf("%s\\t%d\\n", $2, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx num_terminfo_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "num"     {printf("%s\\t%d\\n", $2, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx str_terminfo_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "str"     {printf("%s\\t%d\\n", $2, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx bool_variable_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "bool"    {printf("%s\\t%d\\n", $1, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx num_variable_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "num"     {printf("%s\\t%d\\n", $1, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx str_variable_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "str"     {printf("%s\\t%d\\n", $1, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx bool_termcap_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "bool"    {printf("%s\\t%d\\n", $4, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx num_termcap_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "num"     {printf("%s\\t%d\\n", $4, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const PredIdx str_termcap_sort[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.Pipeline
          children: [
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$AWK')}
                {
                  (SQ <'\n'> <'BEGIN           {i = 0;}\n'> <'/^#/            {next;}\n'> 
                    <'$3 == "str"     {printf("%s\\t%d\\n", $4, i++);}\n'>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_DollarName '$DATA')}
                )
              ]
              do_fork: T
            )
            (C {<sort>})
            (C {($ Id.VSub_DollarName '$AWK')} {(SQ <'{print "\\t", $2, ",\\t/* ", $1, " */";}'>)})
          ]
          negated: F
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const bool bool_from_termcap[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Simple
      words: [
        {($ Id.VSub_DollarName '$AWK')}
        {
          (SQ <'\n'> 
            <
'$3 == "bool" && substr($7, 1, 1) == "-"       {print "\\tFALSE,\\t/* ", $2, " */";}\n'
            > <'$3 == "bool" && substr($7, 1, 1) == "Y"       {print "\\tTRUE,\\t/* ", $2, " */";}\n'>
          )
        }
      ]
      redirects: [
        (redir
          op: <Id.Redir_Less '<'>
          loc: (redir_loc.Fd fd:0)
          arg: {($ Id.VSub_DollarName '$DATA')}
        )
      ]
      do_fork: T
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const bool num_from_termcap[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Simple
      words: [
        {($ Id.VSub_DollarName '$AWK')}
        {
          (SQ <'\n'> 
            <
'$3 == "num" && substr($7, 1, 1) == "-"        {print "\\tFALSE,\\t/* ", $2, " */";}\n'
            > <'$3 == "num" && substr($7, 1, 1) == "Y"        {print "\\tTRUE,\\t/* ", $2, " */";}\n'>
          )
        }
      ]
      redirects: [
        (redir
          op: <Id.Redir_Less '<'>
          loc: (redir_loc.Fd fd:0)
          arg: {($ Id.VSub_DollarName '$DATA')}
        )
      ]
      do_fork: T
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (command.Sentence
      child: (C {<echo>} {(DQ <'static const bool str_from_termcap[] = {'>)})
      terminator: <Id.Op_Semi _>
    )
    (command.Simple
      words: [
        {($ Id.VSub_DollarName '$AWK')}
        {
          (SQ <'\n'> 
            <
'$3 == "str" && substr($7, 1, 1) == "-"        {print "\\tFALSE,\\t/* ", $2, " */";}\n'
            > <'$3 == "str" && substr($7, 1, 1) == "Y"        {print "\\tTRUE,\\t/* ", $2, " */";}\n'>
          )
        }
      ]
      redirects: [
        (redir
          op: <Id.Redir_Less '<'>
          loc: (redir_loc.Fd fd:0)
          arg: {($ Id.VSub_DollarName '$DATA')}
        )
      ]
      do_fork: T
    )
    (command.Sentence child:(C {<echo>} {(DQ <'};'>)}) terminator:<Id.Op_Semi _>)
    (command.Sentence child:(C {<echo>} {(DQ )}) terminator:<Id.Op_Semi _>)
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$data')})
  ]
)