(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: (Token id:Id.Redir_Great val:'>' span_id:321)
              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: (Token id:Id.Redir_DLess val:'<<' span_id:344)
              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: (Token id:Id.ControlFlow_Exit val:exit span_id:356)
      arg_word: {($ Id.VSub_QMark '$?')}
    )
  ]
)