(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:common_objpfx)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [54]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_program_prefix_before_env)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$2')}
          spids: [57]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:run_program_env)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$3')}
          spids: [60]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_program_prefix_after_env)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$4')}
          spids: [63]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:objpfx)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$5')}
          spids: [66]
        )
      ]
    )
    (C {<mkdir>} {<-p>} {(${ Id.VSub_Name objpfx) <domaindir>})
    (C {<mkdir>} {<-p>} {(${ Id.VSub_Name objpfx) <domaindir/lang1/LC_MESSAGES>} 
      {(${ Id.VSub_Name objpfx) <domaindir/lang2/LC_MESSAGES>}
    )
    (command.ForEach
      iter_name: f
      iter_words: [
        {<ADDRESS>}
        {<COLLATE>}
        {<CTYPE>}
        {<IDENTIFICATION>}
        {<MEASUREMENT>}
        {<MONETARY>}
        {<NAME>}
        {<NUMERIC>}
        {<PAPER>}
        {<TELEPHONE>}
        {<TIME>}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-e>} 
                  {(${ Id.VSub_Name objpfx) <domaindir/lang1/LC_> ($ Id.VSub_DollarName '$f')} {<Id.Lit_RBracket ']'>}
                )
                (C {<cp>} 
                  {(${ Id.VSub_Name common_objpfx) <localedata/de_DE.ISO-8859-1/LC_> 
                    ($ Id.VSub_DollarName '$f')
                  } {(${ Id.VSub_Name objpfx) <domaindir/lang1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-e>} 
                  {(${ Id.VSub_Name objpfx) <domaindir/lang2/LC_> ($ Id.VSub_DollarName '$f')} {<Id.Lit_RBracket ']'>}
                )
                (C {<cp>} 
                  {(${ Id.VSub_Name common_objpfx) <localedata/de_DE.ISO-8859-1/LC_> 
                    ($ Id.VSub_DollarName '$f')
                  } {(${ Id.VSub_Name objpfx) <domaindir/lang2>}
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-e>} {(${ Id.VSub_Name objpfx) <domaindir/lang1/LC_MESSAGES/SYS_LC_MESSAGES>})
        (command.BraceGroup
          children: [
            (C {<cp>} 
              {(${ Id.VSub_Name common_objpfx) 
                <localedata/de_DE.ISO-8859-1/LC_MESSAGES/SYS_LC_MESSAGES>
              } {(${ Id.VSub_Name objpfx) <domaindir/lang1/LC_MESSAGES>}
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-e>} {(${ Id.VSub_Name objpfx) <domaindir/lang2/LC_MESSAGES/SYS_LC_MESSAGES>})
        (command.BraceGroup
          children: [
            (C {<cp>} 
              {(${ Id.VSub_Name common_objpfx) 
                <localedata/de_DE.ISO-8859-1/LC_MESSAGES/SYS_LC_MESSAGES>
              } {(${ Id.VSub_Name objpfx) <domaindir/lang2/LC_MESSAGES>}
            )
          ]
        )
      ]
    )
    (C {<msgfmt>} {<-o>} {(${ Id.VSub_Name objpfx) <domaindir/lang1/LC_MESSAGES/tstlang.mo>} 
      {<tstlang1.po>}
    )
    (C {<msgfmt>} {<-o>} {(${ Id.VSub_Name objpfx) <domaindir/lang2/LC_MESSAGES/tstlang.mo>} 
      {<tstlang2.po>}
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [
            {(${ Id.VSub_Name test_program_prefix_before_env)}
            {(${ Id.VSub_Name run_program_env)}
            {<Id.Lit_VarLike 'LOCPATH='> (${ Id.VSub_Name objpfx) <domaindir>}
            {(${ Id.VSub_Name test_program_prefix_after_env)}
            {(${ Id.VSub_Name objpfx) <tst-gettext2>}
            {(${ Id.VSub_Name objpfx) <domaindir>}
          ]
          redirects: [
            (redir.Redir
              op: <Id.Redir_Great '>'>
              fd: -1
              arg_word: {(${ Id.VSub_Name objpfx) <tst-gettext2.out>}
            )
          ]
        )
        (command.Simple
          words: [{<cmp>} {(${ Id.VSub_Name objpfx) <tst-gettext2.out>} {<->}]
          redirects: [
            (redir.HereDoc
              op: <Id.Redir_DLess '<<'>
              fd: -1
              here_begin: {<EOF>}
              here_end_span_id: 354
              stdin_parts: [
                <'String1 - Lang1: 1st string\n'>
                <'String2 - Lang1: 2nd string\n'>
                <'String1 - Lang2: 1st string\n'>
                <'String2 - Lang2: 2nd string\n'>
                <'String1 - First string for testing.\n'>
                <'String2 - Another string for testing.\n'>
              ]
            )
          ]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{($ Id.VSub_QMark '$?')})
  ]
)