(CommandList
  children: [
    (Sentence
      child: 
        (C {(.)} 
          {
            (DQ 
              (BracedVarSub
                token: <VSub_Name srcdir>
                suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(.)})
                spids: [47 51]
              ) (/tests/init.sh)
            )
          }
        )
      terminator: <Op_Semi ';'>
    )
    (C {(path_prepend_)} {(./src)})
    (C {(print_ver_)} {(sort)})
    (FuncDef
      name: number
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Pipeline
                  children: [(C {(cat)} {(-n)}) (C {(sed)} {(SQ <'s/^ *//'>)})]
                  negated: F
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [69]
        )
      spids: [65 68]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('1\n') (' ^ no match for key\n') ('\n') ('^ no match for key\n') ('44\n') 
              ('  ^ no match for key\n') ('33\n') ('  ^ no match for key\n') ('2\n') (' ^ no match for key\n') ('1\n') (' ^ no match for key\n') 
              ('\n') ('^ no match for key\n') ('44\n') ('  ^ no match for key\n') ('33\n') ('  ^ no match for key\n') ('2\n') 
              (' ^ no match for key\n') ('\n') ('^ no match for key\n') ('1\n') ('_\n') ('2\n') ('_\n') ('33\n') ('__\n') ('44\n') ('__\n') ('2>\n') 
              ('  ^ no match for key\n') ('3>1\n') ('  _\n') ('1>2\n') ('  _\n') ('1\n') (' ^ no match for key\n') ('\n') ('^ no match for key\n') 
              ('44\n') ('  ^ no match for key\n') ('33\n') ('  ^ no match for key\n') ('2\n') (' ^ no match for key\n') ('1\n') 
              (' ^ no match for key\n') ('\n') ('^ no match for key\n') ('44\n') ('  ^ no match for key\n') ('33\n') ('  ^ no match for key\n') 
              ('2\n') (' ^ no match for key\n') ('\n') ('^ no match for key\n') ('1\n') ('_\n') ('2\n') ('_\n') ('33\n') ('__\n') 
              ('44\n') ('__\n') ('2>\n') ('  ^ no match for key\n') ('3>1\n') ('  _\n') ('1>2\n') ('  _\n') ('1\n') 
              (' ^ no match for key\n') ('\n') ('^ no match for key\n') ('44\n') ('  ^ no match for key\n') ('33\n') ('  ^ no match for key\n') 
              ('2\n') (' ^ no match for key\n') ('1\n') (' ^ no match for key\n') ('\n') ('^ no match for key\n') ('44\n') 
              ('  ^ no match for key\n') ('33\n') ('  ^ no match for key\n') ('2\n') (' ^ no match for key\n') ('\n') ('^ no match for key\n') 
              ('1\n') ('_\n') ('2\n') ('_\n') ('33\n') ('__\n') ('44\n') ('__\n') ('2>\n') ('  ^ no match for key\n') ('3>1\n') 
              ('  _\n') ('1>2\n') ('  _\n') ('\n') ('^ no match for key\n') ('JAN\n') ('___\n') ('FEB\n') ('___\n') ('FEB\n') 
              ('   ^ no match for key\n') ('\n') ('^ no match for key\n') ('JAN\n') ('   ^ no match for key\n') ('JAZZ\n') ('^ no match for key\n') 
              ('\n') ('^ no match for key\n') ('JAN\n') ('___\n') ('FEB\n') ('___\n') ('2>JAZZ\n') ('  ^ no match for key\n') 
              ('3>\n') ('  ^ no match for key\n') ('4>JAN\n') ('  ___\n') ('1>FEB\n') ('  ___\n') ('\n') ('^ no match for key\n') 
              ('JANZ\n') ('___\n') ('JAN\n') ('___\n') ('FEB\n') ('___\n') ('3>\n') ('  ^ no match for key\n') ('2>JANZ\n') 
              ('  ___\n') ('4>JAN\n') ('  ___\n') ('1>FEB\n') ('  ___\n') (' 1.2ignore\n') (' ___\n') (' 1.1e4ignore\n') (' _____\n') 
              ('>>a\n') ('___\n') ('>b\n') ('__\n') ('a\n') (' ^ no match for key\n') ('\n') ('^ no match for key\n') ('a\n') ('_\n') 
              ('b\n') ('_\n') ('-3\n') ('__\n') ('-2\n') ('__\n') ('-0\n') ('__\n') ('--Mi-1\n') ('^ no match for key\n') ('-0\n') 
              ('__\n') ('1\n') ('_\n') (' 1\n') (' _\n') ('__\n') ('1\n') ('_\n') ('_\n') (' 1\n') (' _\n') ('1\n') ('_\n') (' 1\n') 
              ('__\n') ('1\n') ('_\n') ('2,5\n') ('_\n') ('2.4\n') ('___\n') ('2.,,3\n') ('__\n') ('2.4\n') ('___\n') ('2,,3\n') 
              ('_\n') ('2.4\n') ('___\n') ('1a\n') ('_\n') ('2b\n') ('_\n') ('>a\n') (' _\n') ('A>chr10\n') 
              ('     ^ no match for key\n') ('B>chr1\n') ('     ^ no match for key\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [89]
        )
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(exp)} spids:[93])
      ]
    )
    (Subshell
      child: 
        (CommandList
          children: [
            (ForEach
              iter_name: type
              iter_words: [{(n)} {(h)} {(g)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Pipeline
                      children: [
                        (C {(printf)} {(SQ <'1\\n\\n44\\n33\\n2\\n'>)})
                        (C {(sort)} {(-s)} {(-k2) ($ VSub_Name '$type')} {(--debug)})
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(printf)} {(SQ <'1\\n\\n44\\n33\\n2\\n'>)})
                        (C {(sort)} {(-s)} {(-k1.3) ($ VSub_Name '$type')} {(--debug)})
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(printf)} {(SQ <'1\\n\\n44\\n33\\n2\\n'>)})
                        (C {(sort)} {(-s)} {(-k1) ($ VSub_Name '$type')} {(--debug)})
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(printf)} {(SQ <'2\\n\\n1\\n'>)})
                        (C {(number)})
                        (C {(sort)} {(-s)} {(-k2g)} {(--debug)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [113 190]
                )
              spids: [105 111]
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'FEB\\n\\nJAN\\n'>)})
                (C {(sort)} {(-s)} {(-k1M)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'FEB\\n\\nJAN\\n'>)})
                (C {(sort)} {(-s)} {(-k2) (Lit_Comma ',') (2M)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'FEB\\nJAZZ\\n\\nJAN\\n'>)})
                (C {(sort)} {(-s)} {(-k1M)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'FEB\\nJAZZ\\n\\nJAN\\n'>)})
                (C {(number)})
                (C {(sort)} {(-s)} {(-k2) (Lit_Comma ',') (2M)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'FEB\\nJANZ\\n\\nJAN\\n'>)})
                (C {(sort)} {(-s)} {(-k1M)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'FEB\\nJANZ\\n\\nJAN\\n'>)})
                (C {(number)})
                (C {(sort)} {(-s)} {(-k2) (Lit_Comma ',') (2M)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <' 1.2ignore\\n 1.1e4ignore\\n'>)})
                (C {(sort)} {(-s)} {(-g)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'\\tb\\n\\t\\ta\\n'>)})
                (C {(sort)} {(-s)} {(-d)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'a\\n\\n'>)})
                (C {(sort)} {(-s)} {(-k2) (Lit_Comma ',') (2)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [(C {(printf)} {(SQ <'b\\na\\n'>)}) (C {(sort)} {(-s)} {(-k1)} {(--debug)})]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(--)} {(SQ <'-0\\n1\\n-2\\n--Mi-1\\n-3\\n-0\\n'>)})
                (C {(sort)} {(-s)} {(--debug)} {(-k1) (Lit_Comma ',') (1h)})
              ]
              negated: F
            )
            (Pipeline
              children: [(C {(printf)} {(SQ <' 1\\n1\\n'>)}) (C {(sort)} {(-b)} {(--debug)})]
              negated: F
            )
            (Pipeline
              children: [(C {(printf)} {(SQ <' 1\\n1\\n'>)}) (C {(sort)} {(-sb)} {(--debug)})]
              negated: F
            )
            (Pipeline
              children: [(C {(printf)} {(SQ <' 1\\n1\\n'>)}) (C {(sort)} {(--debug)})]
              negated: F
            )
            (Pipeline
              children: [(C {(printf)} {(SQ <'2,5\\n2.4\\n'>)}) (C {(sort)} {(-s)} {(-k1n)} {(--debug)})]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'2.,,3\\n2.4\\n'>)})
                (C {(sort)} {(-s)} {(-k1n)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'2,,3\\n2.4\\n'>)})
                (C {(sort)} {(-s)} {(-k1n)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(env)} {(printf)} {(SQ <'1a\\x002b\\x00'>)})
                (C {(sort)} {(-s)} {(-n)} {(-z)} {(--debug)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'\\0\\ta\\n'>)})
                (C {(sort)} {(-s)} {(-k2b) (Lit_Comma ',') (2)} {(--debug)})
                (C {(tr)} {(-d)} {(SQ <'\\0'>)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(printf)} {(SQ <'A\\tchr10\\nB\\tchr1\\n'>)})
                (C {(sort)} {(-s)} {(-k2.4b) (Lit_Comma ',') (2.3n)} {(--debug)})
              ]
              negated: F
            )
          ]
        )
      redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(out)} spids:[576])]
      spids: [98 574]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (C {(compare)} {(exp)} {(out)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[589])]
          spids: [589]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('   1\xc2\xb2---++3   1,234  Mi\n') ('               _\n') ('   _________\n') 
              ('________________________\n') ('   1\xc2\xb2---++3   1,234  Mi\n') ('              _____\n') ('   ________\n') 
              ('_______________________\n') ('+1234 1234Gi 1,234M\n') ('^ no match for key\n') ('_____\n') ('^ no match for key\n') ('      ____\n') 
              ('      ____\n') ('      _____\n') ('             _____\n') ('             _____\n') ('             ______\n') 
              ('___________________\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [595]
        )
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(exp)} spids:[599])
      ]
    )
    (C {(unset)} {(LC_ALL)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:f)
          op: Equal
          rhs: {($ VSub_Name '$LOCALE_FR_UTF8')}
          spids: [608]
        )
      ]
      spids: [608]
    )
    (C {(Lit_Other ':')} 
      {
        (BracedVarSub
          token: <VSub_Name LOCALE_FR_UTF8>
          suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(none)})
          spids: [614 618]
        )
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(test)} {(DQ ($ VSub_Name '$LOCALE_FR_UTF8'))} {(KW_Bang '!') (Lit_Other '=')} 
                  {(DQ (none))}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Pipeline
                      children: [
                        (C {(echo)} {(SQ <'   1\xc2\xb2---++3   1,234  Mi'>)})
                        (SimpleCommand
                          words: [{(sort)} {(--debug)} {(-k2g)} {(-k1b) (Lit_Comma ',') (1)}]
                          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[651])]
                        )
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(echo)} {(SQ <'   1\xc2\xb2---++3   1,234  Mi'>)})
                        (SimpleCommand
                          words: [{(sort)} {(--debug)} {(-k2g)} {(-k1b) (Lit_Comma ',') (1)}]
                          more_env: [
                            (env_pair
                              name: LC_COLLATE
                              val: {($ VSub_Name '$f')}
                              spids: [674]
                            )
                            (env_pair
                              name: LC_CTYPE
                              val: {($ VSub_Name '$f')}
                              spids: [677]
                            )
                            (env_pair
                              name: LC_NUMERIC
                              val: {($ VSub_Name '$f')}
                              spids: [680]
                            )
                            (env_pair
                              name: LC_MESSAGES
                              val: {(C)}
                              spids: [683]
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (Pipeline
                      children: [
                        (C {(echo)} {(SQ <'+1234 1234Gi 1,234M'>)})
                        (SimpleCommand
                          words: [
                            {(sort)}
                            {(--debug)}
                            {(-k1) (Lit_Comma ',') (1n)}
                            {(-k1) (Lit_Comma ',') (1g)}
                            {(-k1) (Lit_Comma ',') (1h)}
                            {(-k2) (Lit_Comma ',') (2n)}
                            {(-k2) (Lit_Comma ',') (2g)}
                            {(-k2) (Lit_Comma ',') (2h)}
                            {(-k3) (Lit_Comma ',') (3n)}
                            {(-k3) (Lit_Comma ',') (3g)}
                            {(-k3) (Lit_Comma ',') (3h)}
                          ]
                          more_env: [
                            (env_pair
                              name: LC_COLLATE
                              val: {($ VSub_Name '$f')}
                              spids: [708]
                            )
                            (env_pair
                              name: LC_CTYPE
                              val: {($ VSub_Name '$f')}
                              spids: [711]
                            )
                            (env_pair
                              name: LC_NUMERIC
                              val: {($ VSub_Name '$f')}
                              spids: [714]
                            )
                            (env_pair
                              name: LC_MESSAGES
                              val: {(C)}
                              spids: [717]
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                )
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(out)} spids:[767])]
              spids: [639 765]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(compare)} {(exp)} {(out)})
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:fail) op:Equal rhs:{(1)} spids:[780])]
                  spids: [780]
                )
              ]
            )
          ]
          spids: [16777215 636]
        )
      ]
      spids: [16777215 783]
    )
    (C {(Exit)} {($ VSub_Name '$fail')})
  ]
)