(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-e)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:codir)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [57]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_wrapper_env)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$2'))}
          spids: [60]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:run_program_env)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$3'))}
          spids: [65]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:temp1)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$codir') (/iconvdata/iconv-test.xxx)}
          spids: [74]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:temp2)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$codir') (/iconvdata/iconv-test.yyy)}
          spids: [78]
        )
      ]
    )
    (C {(trap)} {(DQ ('rm -f ') ($ Id.VSub_DollarName '$temp1') (' ') ($ Id.VSub_DollarName '$temp2'))} 
      {(1)} {(2)} {(3)} {(15)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIBPATH)
          op: assign_op.Equal
          rhs: 
            {($ Id.VSub_DollarName '$codir') (Id.Lit_Other ':') ($ Id.VSub_DollarName '$codir') 
              (/iconvdata)
            }
          spids: [104]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ICONV)
          op: assign_op.Equal
          rhs: 
            {
              (SQ 
                (Token
                  id: Id.Lit_Chars
                  val: '$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \\\n'
                  span_id: 116
                ) (Token id:Id.Lit_Chars val:'       $codir/iconv/iconv_prog' span_id:117)
              )
            }
          spids: [114]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ICONV)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$test_wrapper_env') (' ') 
                ($ Id.VSub_DollarName '$run_program_env') (' ') ($ Id.VSub_DollarName '$ICONV')
              )
            }
          spids: [120]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (command.Subshell
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Sentence
                              child: (C {(echo)} {(DQ (testing) (Id.Lit_Other '\\') (c))})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:143)
                            )
                            (C {(echo)} {(1) (Id.Lit_Comma ',') (2) (Id.Lit_Comma ',') (3)})
                          ]
                        )
                    )
                    (command.Simple
                      words: [{(grep)} {(c)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:160)
                          fd: -1
                          arg_word: {(/dev/null)}
                        )
                      ]
                    )
                  ]
                  negated: F
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:162)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ac_n)
                  op: assign_op.Equal
                  rhs: {(-n)}
                  spids: [167]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ac_c)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [170]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ac_t)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [172]
                )
              ]
            )
          ]
          spids: [133 164]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:ac_n)
              op: assign_op.Equal
              rhs: (word.Empty)
              spids: [177]
            )
            (assign_pair
              lhs: (sh_lhs_expr.Name name:ac_c)
              op: assign_op.Equal
              rhs: {(SQ (Token id:Id.Lit_Chars val:'\\c' span_id:181))}
              spids: [179]
            )
            (assign_pair
              lhs: (sh_lhs_expr.Name name:ac_t)
              op: assign_op.Equal
              rhs: (word.Empty)
              spids: [184]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {(0)}
          spids: [195]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:198)
      cond: [
        (command.Sentence
          child: (C {(read)} {(from)} {(to)} {(subset)} {(targets)})
          terminator: (Token id:Id.Op_Semi val:';' span_id:209)
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$subset'))})
                            (C {(test)} {(DQ ($ Id.VSub_DollarName '$from'))} {(Id.Lit_Equals '=')} 
                              {(SQ (Token id:Id.Lit_Chars val:'#' span_id:239))}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:241)
                    )
                  ]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:245)
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:246)
                    )
                  ]
                  spids: [218 243]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PROG)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:257)
                        command_list: 
                          (command.CommandList
                            children: [(C {(eval)} {(echo)} {($ Id.VSub_DollarName '$ICONV')})]
                          )
                      )
                    }
                  spids: [256]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$targets'))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:278)
                    )
                  ]
                  action: [
                    (command.ForEach
                      iter_name: t
                      iter_words: [{($ Id.VSub_DollarName '$targets')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} {(-f)} {(testdata/) ($ Id.VSub_DollarName '$from')})
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:303)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {
                                        (DQ ('   test data: ') ($ Id.VSub_DollarName '$from') (' -> ') 
                                          ($ Id.VSub_DollarName '$t') (' ') ($ Id.VSub_DollarName '$ac_c')
                                        )
                                      }
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.Simple
                                          words: [
                                            {($ Id.VSub_DollarName '$PROG')}
                                            {(-f)}
                                            {($ Id.VSub_DollarName '$from')}
                                            {(-t)}
                                            {($ Id.VSub_DollarName '$t')}
                                            {(testdata/) ($ Id.VSub_DollarName '$from')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Less val:'<' span_id:335)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:339)
                                              fd: -1
                                              arg_word: {($ Id.VSub_DollarName '$temp1')}
                                            )
                                          ]
                                        )
                                        (command.BraceGroup
                                          children: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {(test)} {($ Id.VSub_QMark '$?')} {(-gt)} 
                                                          {(128)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 357
                                                        )
                                                    )
                                                  ]
                                                  action: [
                                                    (command.Sentence
                                                      child: 
                                                        (command.ControlFlow
                                                          token: 
                                                            (Token
                                                              id: Id.ControlFlow_Exit
                                                              val: exit
                                                              span_id: 361
                                                            )
                                                          arg_word: {(1)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 364
                                                        )
                                                    )
                                                  ]
                                                  spids: [348 359]
                                                )
                                              ]
                                            )
                                            (command.Sentence
                                              child: (C {(echo)} {(DQ (FAILED))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:374)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:failed)
                                                      op: assign_op.Equal
                                                      rhs: {(1)}
                                                      spids: [376]
                                                    )
                                                  ]
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:378)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: 
                                                    (Token
                                                      id: Id.ControlFlow_Continue
                                                      val: continue
                                                      span_id: 380
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:381)
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {(DQ (OK) ($ Id.VSub_DollarName '$ac_c'))}
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(test)} {(-s)} 
                                                  {(testdata/) ($ Id.VSub_DollarName '$from') (..) 
                                                    ($ Id.VSub_DollarName '$t')
                                                  }
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:406)
                                            )
                                          ]
                                          action: [
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (command.Simple
                                                  words: [
                                                    {(cmp)}
                                                    {($ Id.VSub_DollarName '$temp1')}
                                                    {(testdata/) ($ Id.VSub_DollarName '$from') (..) 
                                                      ($ Id.VSub_DollarName '$t')
                                                    }
                                                  ]
                                                  redirects: [
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_Great
                                                          val: '>'
                                                          span_id: 423
                                                        )
                                                      fd: -1
                                                      arg_word: {(/dev/null)}
                                                    )
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_GreatAnd
                                                          val: '2>&'
                                                          span_id: 427
                                                        )
                                                      fd: 2
                                                      arg_word: {(1)}
                                                    )
                                                  ]
                                                  more_env: [
                                                    (env_pair
                                                      name: LC_ALL
                                                      val: {(C)}
                                                      spids: [411]
                                                    )
                                                  ]
                                                )
                                                (command.BraceGroup
                                                  children: [
                                                    (command.Sentence
                                                      child: (C {(echo)} {(DQ (/FAILED))})
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 440
                                                        )
                                                    )
                                                    (command.Sentence
                                                      child: 
                                                        (command.ShAssignment
                                                          pairs: [
                                                            (assign_pair
                                                              lhs: (sh_lhs_expr.Name name:failed)
                                                              op: assign_op.Equal
                                                              rhs: {(1)}
                                                              spids: [442]
                                                            )
                                                          ]
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 444
                                                        )
                                                    )
                                                    (command.Sentence
                                                      child: 
                                                        (command.ControlFlow
                                                          token: 
                                                            (Token
                                                              id: Id.ControlFlow_Continue
                                                              val: continue
                                                              span_id: 446
                                                            )
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 447
                                                        )
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                            (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                              {(DQ (/OK) ($ Id.VSub_DollarName '$ac_c'))}
                                            )
                                          ]
                                          spids: [396 408]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {
                                        (DQ (' -> ') ($ Id.VSub_DollarName '$from') (' ') 
                                          ($ Id.VSub_DollarName '$ac_c')
                                        )
                                      }
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.Simple
                                          words: [
                                            {($ Id.VSub_DollarName '$PROG')}
                                            {(-f)}
                                            {($ Id.VSub_DollarName '$t')}
                                            {(-t)}
                                            {($ Id.VSub_DollarName '$to')}
                                            {(-o)}
                                            {($ Id.VSub_DollarName '$temp2')}
                                            {($ Id.VSub_DollarName '$temp1')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Less val:'<' span_id:493)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                        (command.BraceGroup
                                          children: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {(test)} {($ Id.VSub_QMark '$?')} {(-gt)} 
                                                          {(128)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 511
                                                        )
                                                    )
                                                  ]
                                                  action: [
                                                    (command.Sentence
                                                      child: 
                                                        (command.ControlFlow
                                                          token: 
                                                            (Token
                                                              id: Id.ControlFlow_Exit
                                                              val: exit
                                                              span_id: 515
                                                            )
                                                          arg_word: {(1)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 518
                                                        )
                                                    )
                                                  ]
                                                  spids: [502 513]
                                                )
                                              ]
                                            )
                                            (command.Sentence
                                              child: (C {(echo)} {(DQ (FAILED))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:528)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:failed)
                                                      op: assign_op.Equal
                                                      rhs: {(1)}
                                                      spids: [530]
                                                    )
                                                  ]
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:532)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: 
                                                    (Token
                                                      id: Id.ControlFlow_Continue
                                                      val: continue
                                                      span_id: 534
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:535)
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {(DQ (OK) ($ Id.VSub_DollarName '$ac_c'))}
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp Id.Op_DPipe]
                                      children: [
                                        (C {(test)} {(-s)} {($ Id.VSub_DollarName '$temp1')})
                                        (command.Simple
                                          words: [
                                            {(cmp)}
                                            {(testdata/) ($ Id.VSub_DollarName '$from')}
                                            {($ Id.VSub_DollarName '$temp2')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:569)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                            (redir.Redir
                                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:573)
                                              fd: 2
                                              arg_word: {(1)}
                                            )
                                          ]
                                          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[559])]
                                        )
                                        (command.BraceGroup
                                          children: [
                                            (command.Sentence
                                              child: (C {(echo)} {(DQ (/FAILED))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:586)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:failed)
                                                      op: assign_op.Equal
                                                      rhs: {(1)}
                                                      spids: [588]
                                                    )
                                                  ]
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:590)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: 
                                                    (Token
                                                      id: Id.ControlFlow_Continue
                                                      val: continue
                                                      span_id: 592
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:593)
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {(DQ (/OK))})
                                    (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$temp1')} 
                                      {($ Id.VSub_DollarName '$temp2')}
                                    )
                                  ]
                                  spids: [295 305]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} {($ Id.VSub_DollarName '$subset')} 
                                          {(Id.Lit_Equals '=')} {(Y)}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:639)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {
                                        (DQ ('      suntzu: ') ($ Id.VSub_DollarName '$from') (' -> ') 
                                          ($ Id.VSub_DollarName '$t') (' -> ') ($ Id.VSub_DollarName '$to') (' ') ($ Id.VSub_DollarName '$ac_c')
                                        )
                                      }
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              words: [
                                                {($ Id.VSub_DollarName '$PROG')}
                                                {(-f)}
                                                {($ Id.VSub_DollarName '$from')}
                                                {(-t)}
                                                {($ Id.VSub_DollarName '$t')}
                                                {(testdata/suntzus)}
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Less val:'<' span_id:672)
                                                  fd: -1
                                                  arg_word: {(/dev/null)}
                                                )
                                              ]
                                            )
                                            (command.Simple
                                              words: [
                                                {($ Id.VSub_DollarName '$PROG')}
                                                {(-f)}
                                                {($ Id.VSub_DollarName '$t')}
                                                {(-t)}
                                                {($ Id.VSub_DollarName '$to')}
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Great val:'>' span_id:689)
                                                  fd: -1
                                                  arg_word: {($ Id.VSub_DollarName '$temp1')}
                                                )
                                              ]
                                            )
                                          ]
                                          negated: F
                                        )
                                        (command.BraceGroup
                                          children: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {(test)} {($ Id.VSub_QMark '$?')} {(-gt)} 
                                                          {(128)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 707
                                                        )
                                                    )
                                                  ]
                                                  action: [
                                                    (command.Sentence
                                                      child: 
                                                        (command.ControlFlow
                                                          token: 
                                                            (Token
                                                              id: Id.ControlFlow_Exit
                                                              val: exit
                                                              span_id: 711
                                                            )
                                                          arg_word: {(1)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 714
                                                        )
                                                    )
                                                  ]
                                                  spids: [698 709]
                                                )
                                              ]
                                            )
                                            (command.Sentence
                                              child: (C {(echo)} {(DQ (FAILED))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:724)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:failed)
                                                      op: assign_op.Equal
                                                      rhs: {(1)}
                                                      spids: [726]
                                                    )
                                                  ]
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:728)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: 
                                                    (Token
                                                      id: Id.ControlFlow_Continue
                                                      val: continue
                                                      span_id: 730
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:731)
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {(DQ (OK) ($ Id.VSub_DollarName '$ac_c'))}
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.Simple
                                          words: [
                                            {(cmp)}
                                            {(testdata/suntzus)}
                                            {($ Id.VSub_DollarName '$temp1')}
                                          ]
                                          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[746])]
                                        )
                                        (command.BraceGroup
                                          children: [
                                            (command.Sentence
                                              child: (C {(echo)} {(DQ (/FAILED))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:765)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:failed)
                                                      op: assign_op.Equal
                                                      rhs: {(1)}
                                                      spids: [767]
                                                    )
                                                  ]
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:769)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: 
                                                    (Token
                                                      id: Id.ControlFlow_Continue
                                                      val: continue
                                                      span_id: 771
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:772)
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {(DQ (/OK))})
                                  ]
                                  spids: [630 641]
                                )
                              ]
                            )
                            (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$temp1')})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} {(DQ ($ Id.VSub_DollarName '$t'))} 
                                          {(Id.Lit_Equals '=')} {(UTF8)}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:810)
                                    )
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:tc)
                                              op: assign_op.Equal
                                              rhs: {(UTF-8)}
                                              spids: [814]
                                            )
                                          ]
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:816)
                                    )
                                  ]
                                  spids: [799 812]
                                )
                              ]
                              else_action: [
                                (command.Sentence
                                  child: 
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:tc)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$t'))}
                                          spids: [820]
                                        )
                                      ]
                                    )
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:824)
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
                                          children: [
                                            (C {(test)} {(-f)} 
                                              {(../localedata/charmaps/) 
                                                ($ Id.VSub_DollarName '$from')
                                              }
                                            )
                                            (C {(test)} {(-f)} 
                                              {(../localedata/charmaps/) ($ Id.VSub_DollarName '$tc')}
                                            )
                                            (C {(test)} {(-f)} 
                                              {(testdata/) ($ Id.VSub_DollarName '$from')}
                                            )
                                            (command.Pipeline
                                              children: [
                                                (command.Simple
                                                  words: [
                                                    {(grep)}
                                                    {
                                                      (SQ 
                                                        (Token
                                                          id: Id.Lit_Chars
                                                          val: '<U....><U....>'
                                                          span_id: 866
                                                        )
                                                      )
                                                    }
                                                    {(../localedata/charmaps/) 
                                                      ($ Id.VSub_DollarName '$from')
                                                    }
                                                  ]
                                                  redirects: [
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_Great
                                                          val: '>'
                                                          span_id: 872
                                                        )
                                                      fd: -1
                                                      arg_word: {(/dev/null)}
                                                    )
                                                  ]
                                                )
                                              ]
                                              negated: T
                                            )
                                          ]
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:875)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {
                                        (DQ ('test charmap: ') ($ Id.VSub_DollarName '$from') (' -> ') 
                                          ($ Id.VSub_DollarName '$t') (' ') ($ Id.VSub_DollarName '$ac_c')
                                        )
                                      }
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.Simple
                                          words: [
                                            {($ Id.VSub_DollarName '$PROG')}
                                            {(-f)}
                                            {(../localedata/charmaps/) ($ Id.VSub_DollarName '$from')}
                                            {(-t)}
                                            {(../localedata/charmaps/) ($ Id.VSub_DollarName '$tc')}
                                            {(testdata/) ($ Id.VSub_DollarName '$from')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Less val:'<' span_id:911)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:915)
                                              fd: -1
                                              arg_word: {($ Id.VSub_DollarName '$temp1')}
                                            )
                                          ]
                                        )
                                        (command.BraceGroup
                                          children: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {(test)} {($ Id.VSub_QMark '$?')} {(-gt)} 
                                                          {(128)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 933
                                                        )
                                                    )
                                                  ]
                                                  action: [
                                                    (command.Sentence
                                                      child: 
                                                        (command.ControlFlow
                                                          token: 
                                                            (Token
                                                              id: Id.ControlFlow_Exit
                                                              val: exit
                                                              span_id: 937
                                                            )
                                                          arg_word: {(1)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 940
                                                        )
                                                    )
                                                  ]
                                                  spids: [924 935]
                                                )
                                              ]
                                            )
                                            (command.Sentence
                                              child: (C {(echo)} {(DQ (FAILED))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:950)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:failed)
                                                      op: assign_op.Equal
                                                      rhs: {(1)}
                                                      spids: [952]
                                                    )
                                                  ]
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:954)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: 
                                                    (Token
                                                      id: Id.ControlFlow_Continue
                                                      val: continue
                                                      span_id: 956
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:957)
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {(DQ (OK) ($ Id.VSub_DollarName '$ac_c'))}
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(test)} {(-s)} 
                                                  {(testdata/) ($ Id.VSub_DollarName '$from') (..) 
                                                    ($ Id.VSub_DollarName '$t')
                                                  }
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:982)
                                            )
                                          ]
                                          action: [
                                            (command.AndOr
                                              ops: [Id.Op_DPipe]
                                              children: [
                                                (command.Simple
                                                  words: [
                                                    {(cmp)}
                                                    {($ Id.VSub_DollarName '$temp1')}
                                                    {(testdata/) ($ Id.VSub_DollarName '$from') (..) 
                                                      ($ Id.VSub_DollarName '$t')
                                                    }
                                                  ]
                                                  redirects: [
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_Great
                                                          val: '>'
                                                          span_id: 999
                                                        )
                                                      fd: -1
                                                      arg_word: {(/dev/null)}
                                                    )
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_GreatAnd
                                                          val: '2>&'
                                                          span_id: 1003
                                                        )
                                                      fd: 2
                                                      arg_word: {(1)}
                                                    )
                                                  ]
                                                  more_env: [
                                                    (env_pair
                                                      name: LC_ALL
                                                      val: {(C)}
                                                      spids: [987]
                                                    )
                                                  ]
                                                )
                                                (command.BraceGroup
                                                  children: [
                                                    (command.Sentence
                                                      child: (C {(echo)} {(DQ (/FAILED))})
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 1016
                                                        )
                                                    )
                                                    (command.Sentence
                                                      child: 
                                                        (command.ShAssignment
                                                          pairs: [
                                                            (assign_pair
                                                              lhs: (sh_lhs_expr.Name name:failed)
                                                              op: assign_op.Equal
                                                              rhs: {(1)}
                                                              spids: [1018]
                                                            )
                                                          ]
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 1020
                                                        )
                                                    )
                                                    (command.Sentence
                                                      child: 
                                                        (command.ControlFlow
                                                          token: 
                                                            (Token
                                                              id: Id.ControlFlow_Continue
                                                              val: continue
                                                              span_id: 1022
                                                            )
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 1023
                                                        )
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                            (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                              {(DQ (/OK) ($ Id.VSub_DollarName '$ac_c'))}
                                            )
                                          ]
                                          spids: [972 984]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {
                                        (DQ (' -> ') ($ Id.VSub_DollarName '$from') (' ') 
                                          ($ Id.VSub_DollarName '$ac_c')
                                        )
                                      }
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.Simple
                                          words: [
                                            {($ Id.VSub_DollarName '$PROG')}
                                            {(-t)}
                                            {(../localedata/charmaps/) ($ Id.VSub_DollarName '$from')}
                                            {(-f)}
                                            {(../localedata/charmaps/) ($ Id.VSub_DollarName '$tc')}
                                            {(-o)}
                                            {($ Id.VSub_DollarName '$temp2')}
                                            {($ Id.VSub_DollarName '$temp1')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Less val:'<' span_id:1073)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                        (command.BraceGroup
                                          children: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {(test)} {($ Id.VSub_QMark '$?')} {(-gt)} 
                                                          {(128)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 1091
                                                        )
                                                    )
                                                  ]
                                                  action: [
                                                    (command.Sentence
                                                      child: 
                                                        (command.ControlFlow
                                                          token: 
                                                            (Token
                                                              id: Id.ControlFlow_Exit
                                                              val: exit
                                                              span_id: 1095
                                                            )
                                                          arg_word: {(1)}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 1098
                                                        )
                                                    )
                                                  ]
                                                  spids: [1082 1093]
                                                )
                                              ]
                                            )
                                            (command.Sentence
                                              child: (C {(echo)} {(DQ (FAILED))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1108)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:failed)
                                                      op: assign_op.Equal
                                                      rhs: {(1)}
                                                      spids: [1110]
                                                    )
                                                  ]
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1112)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: 
                                                    (Token
                                                      id: Id.ControlFlow_Continue
                                                      val: continue
                                                      span_id: 1114
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1115)
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                                      {(DQ (OK) ($ Id.VSub_DollarName '$ac_c'))}
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp Id.Op_DPipe]
                                      children: [
                                        (C {(test)} {(-s)} {($ Id.VSub_DollarName '$temp1')})
                                        (command.Simple
                                          words: [
                                            {(cmp)}
                                            {(testdata/) ($ Id.VSub_DollarName '$from')}
                                            {($ Id.VSub_DollarName '$temp2')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:1149)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                            (redir.Redir
                                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1153)
                                              fd: 2
                                              arg_word: {(1)}
                                            )
                                          ]
                                          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[1139])]
                                        )
                                        (command.BraceGroup
                                          children: [
                                            (command.Sentence
                                              child: (C {(echo)} {(DQ (/FAILED))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1166)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:failed)
                                                      op: assign_op.Equal
                                                      rhs: {(1)}
                                                      spids: [1168]
                                                    )
                                                  ]
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1170)
                                            )
                                            (command.Sentence
                                              child: 
                                                (command.ControlFlow
                                                  token: 
                                                    (Token
                                                      id: Id.ControlFlow_Continue
                                                      val: continue
                                                      span_id: 1172
                                                    )
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:1173)
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(echo)} {(DQ (/OK))})
                                    (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$temp1')} 
                                      {($ Id.VSub_DollarName '$temp2')}
                                    )
                                  ]
                                  spids: [829 877]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [269 280]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(test)} {(DQ ($ Id.VSub_DollarName '$subset'))} {(Id.Lit_Equals '=')} {(N)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1215)
                    )
                  ]
                  action: [
                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                      {
                        (DQ ('      suntzu: ASCII -> ') ($ Id.VSub_DollarName '$to') (' -> ASCII ') 
                          ($ Id.VSub_DollarName '$ac_c')
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Pipeline
                          children: [
                            (command.Simple
                              words: [
                                {($ Id.VSub_DollarName '$PROG')}
                                {(-f)}
                                {(ASCII)}
                                {(-t)}
                                {($ Id.VSub_DollarName '$to')}
                                {(testdata/suntzus)}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Less val:'<' span_id:1244)
                                  fd: -1
                                  arg_word: {(/dev/null)}
                                )
                              ]
                            )
                            (command.Simple
                              words: [
                                {($ Id.VSub_DollarName '$PROG')}
                                {(-f)}
                                {($ Id.VSub_DollarName '$to')}
                                {(-t)}
                                {(ASCII)}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:1261)
                                  fd: -1
                                  arg_word: {($ Id.VSub_DollarName '$temp1')}
                                )
                              ]
                            )
                          ]
                          negated: F
                        )
                        (command.BraceGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: (C {(test)} {($ Id.VSub_QMark '$?')} {(-gt)} {(128)})
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1279)
                                    )
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: (Token id:Id.ControlFlow_Exit val:exit span_id:1283)
                                          arg_word: {(1)}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1286)
                                    )
                                  ]
                                  spids: [1270 1281]
                                )
                              ]
                            )
                            (command.Sentence
                              child: (C {(echo)} {(DQ (FAILED))})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1296)
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:failed)
                                      op: assign_op.Equal
                                      rhs: {(1)}
                                      spids: [1298]
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1300)
                            )
                            (command.Sentence
                              child: 
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Continue val:continue span_id:1302)
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1303)
                            )
                          ]
                        )
                      ]
                    )
                    (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
                      {(DQ (OK) ($ Id.VSub_DollarName '$ac_c'))}
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(cmp)} {(testdata/suntzus)} {($ Id.VSub_DollarName '$temp1')}]
                          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[1318])]
                        )
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {(echo)} {(DQ (/FAILED))})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1337)
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:failed)
                                      op: assign_op.Equal
                                      rhs: {(1)}
                                      spids: [1339]
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1341)
                            )
                            (command.Sentence
                              child: 
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Continue val:continue span_id:1343)
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1344)
                            )
                          ]
                        )
                      ]
                    )
                    (C {(echo)} {(DQ (/OK))})
                  ]
                  spids: [1204 1217]
                )
              ]
            )
          ]
        )
      redirects: [
        (redir.Redir op:(Token id:Id.Redir_Less val:'<' span_id:1360) fd:-1 arg_word:{(TESTS)})
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:1371)
      cond: [
        (command.Sentence
          child: (C {(read)} {(utf8)} {(from)} {(filename)})
          terminator: (Token id:Id.Op_Semi val:';' span_id:1380)
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$filename'))})
                            (C {(test)} {(DQ ($ Id.VSub_DollarName '$utf8'))} {(Id.Lit_Equals '=')} 
                              {(SQ (Token id:Id.Lit_Chars val:'#' span_id:1410))}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1412)
                    )
                  ]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:1416)
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1417)
                    )
                  ]
                  spids: [1389 1414]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PROG)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1428)
                        command_list: 
                          (command.CommandList
                            children: [(C {(eval)} {(echo)} {($ Id.VSub_DollarName '$ICONV')})]
                          )
                      )
                    }
                  spids: [1427]
                )
              ]
            )
            (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
              {
                (DQ ('test encoder: ') ($ Id.VSub_DollarName '$utf8') (' -> ') 
                  ($ Id.VSub_DollarName '$from') (' ') ($ Id.VSub_DollarName '$ac_c')
                )
              }
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$PROG')}
                {(-f)}
                {($ Id.VSub_DollarName '$utf8')}
                {(-t)}
                {($ Id.VSub_DollarName '$from')}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:1468)
                  fd: -1
                  arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name utf8)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1479)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$temp1')}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [
                    {(cmp)}
                    {($ Id.VSub_DollarName '$temp1')}
                    {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.BE)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1501)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1505)
                      fd: 2
                      arg_word: {(1)}
                    )
                  ]
                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[1484])]
                )
                (command.Simple
                  words: [
                    {(cmp)}
                    {($ Id.VSub_DollarName '$temp1')}
                    {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.LE)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1528)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1532)
                      fd: 2
                      arg_word: {(1)}
                    )
                  ]
                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[1511])]
                )
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: (C {(echo)} {(DQ (/FAILED))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1545)
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:failed)
                              op: assign_op.Equal
                              rhs: {(1)}
                              spids: [1547]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1549)
                    )
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:1551)
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1552)
                    )
                  ]
                )
              ]
            )
            (C {(echo)} {(DQ (OK))})
            (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
              {
                (DQ ('test decoder: ') ($ Id.VSub_DollarName '$from') (' -> ') 
                  ($ Id.VSub_DollarName '$utf8') (' ') ($ Id.VSub_DollarName '$ac_c')
                )
              }
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$PROG')}
                {(-f)}
                {($ Id.VSub_DollarName '$from')}
                {(-t)}
                {($ Id.VSub_DollarName '$utf8')}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:1593)
                  fd: -1
                  arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.BE)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1605)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$temp1')}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [
                    {(cmp)}
                    {($ Id.VSub_DollarName '$temp1')}
                    {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name utf8)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1626)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1630)
                      fd: 2
                      arg_word: {(1)}
                    )
                  ]
                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[1610])]
                )
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: (C {(echo)} {(DQ (/FAILED))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1643)
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:failed)
                              op: assign_op.Equal
                              rhs: {(1)}
                              spids: [1645]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1647)
                    )
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:1649)
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1650)
                    )
                  ]
                )
              ]
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$PROG')}
                {(-f)}
                {($ Id.VSub_DollarName '$from')}
                {(-t)}
                {($ Id.VSub_DollarName '$utf8')}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:1665)
                  fd: -1
                  arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.LE)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1677)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$temp1')}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [
                    {(cmp)}
                    {($ Id.VSub_DollarName '$temp1')}
                    {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name utf8)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1698)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1702)
                      fd: 2
                      arg_word: {(1)}
                    )
                  ]
                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[1682])]
                )
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: (C {(echo)} {(DQ (/FAILED))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1715)
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:failed)
                              op: assign_op.Equal
                              rhs: {(1)}
                              spids: [1717]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1719)
                    )
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:1721)
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1722)
                    )
                  ]
                )
              ]
            )
            (C {(echo)} {(DQ (OK))})
            (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
              {
                (DQ ('test non-BOM: ') (${ Id.VSub_Name from) ('BE -> ') (${ Id.VSub_Name from) ('LE ') 
                  ($ Id.VSub_DollarName '$ac_c')
                )
              }
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$PROG')}
                {(-f)}
                {(${ Id.VSub_Name from) (BE)}
                {(-t)}
                {(${ Id.VSub_Name from) (LE)}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:1773)
                  fd: -1
                  arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.BE)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1785)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$temp1')}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [
                    {(cmp)}
                    {($ Id.VSub_DollarName '$temp1')}
                    {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.LE)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1807)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1811)
                      fd: 2
                      arg_word: {(1)}
                    )
                  ]
                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[1790])]
                )
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: (C {(echo)} {(DQ (/FAILED))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1824)
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:failed)
                              op: assign_op.Equal
                              rhs: {(1)}
                              spids: [1826]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1828)
                    )
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:1830)
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1831)
                    )
                  ]
                )
              ]
            )
            (C {(echo)} {(DQ (OK))})
            (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
              {
                (DQ ('test non-BOM: ') (${ Id.VSub_Name from) ('LE -> ') (${ Id.VSub_Name from) ('BE ') 
                  ($ Id.VSub_DollarName '$ac_c')
                )
              }
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$PROG')}
                {(-f)}
                {(${ Id.VSub_Name from) (LE)}
                {(-t)}
                {(${ Id.VSub_Name from) (BE)}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:1882)
                  fd: -1
                  arg_word: {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.LE)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1894)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$temp1')}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [
                    {(cmp)}
                    {($ Id.VSub_DollarName '$temp1')}
                    {(testdata/) (${ Id.VSub_Name filename) (..) (${ Id.VSub_Name from) (.BE)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1916)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1920)
                      fd: 2
                      arg_word: {(1)}
                    )
                  ]
                  more_env: [(env_pair name:LC_ALL val:{(C)} spids:[1899])]
                )
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: (C {(echo)} {(DQ (/FAILED))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1933)
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:failed)
                              op: assign_op.Equal
                              rhs: {(1)}
                              spids: [1935]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1937)
                    )
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:1939)
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1940)
                    )
                  ]
                )
              ]
            )
            (C {(echo)} {(DQ (OK))})
          ]
        )
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Less val:'<' span_id:1954)
          fd: -1
          arg_word: {(TESTS2)}
        )
      ]
    )
    (command.Simple
      words: [
        {(printf)}
        {(SQ (Token id:Id.Lit_Chars val:'\\016\\377\\377\\377\\377\\377\\377\\377' span_id:1965))}
      ]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1968)
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$temp1')}
        )
      ]
    )
    (command.ForEach
      iter_name: from
      iter_words: [{($ Id.VSub_DollarName '$iconv_modules')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(echo)} {($ Id.VSub_DollarName '$ac_n')} 
              {
                (DQ ('test decoder ') ($ Id.VSub_DollarName '$from') (' ') 
                  ($ Id.VSub_DollarName '$ac_c')
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PROG)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1998)
                        command_list: 
                          (command.CommandList
                            children: [(C {(eval)} {(echo)} {($ Id.VSub_DollarName '$ICONV')})]
                          )
                      )
                    }
                  spids: [1997]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [
                            {($ Id.VSub_DollarName '$PROG')}
                            {(-f)}
                            {($ Id.VSub_DollarName '$from')}
                            {(-t)}
                            {(UTF8)}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Less val:'<' span_id:2021)
                              fd: -1
                              arg_word: {($ Id.VSub_DollarName '$temp1')}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:2025)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:2028)
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2031)
                    )
                  ]
                  action: [(C {(Id.Lit_Other ':')})]
                  spids: [2009 2033]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:status)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '$?')}
                      spids: [2045]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: (C {(test)} {($ Id.VSub_DollarName '$status')} {(-gt)} {(1)})
                          terminator: (Token id:Id.Op_Semi val:';' span_id:2059)
                        )
                      ]
                      action: [
                        (C {(echo)} {(DQ (/FAILED))})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:failed)
                              op: assign_op.Equal
                              rhs: {(1)}
                              spids: [2071]
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:2075)
                        )
                      ]
                      spids: [2049 2061]
                    )
                  ]
                )
              ]
            )
            (C {(echo)} {(DQ (OK))})
          ]
        )
    )
    (command.ControlFlow
      token: (Token id:Id.ControlFlow_Exit val:exit span_id:2093)
      arg_word: {($ Id.VSub_DollarName '$failed')}
    )
  ]
)