(command.CommandList
  children: [
    (C {(Id.Lit_Other ':')} 
      {
        (braced_var_sub
          token: (Token id:Id.VSub_Name val:srcdir span_id:6)
          suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{(.)})
        )
      }
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(.)} {(DQ ($ Id.VSub_DollarName '$srcdir') (/init.sh))})
          terminator: (Token id:Id.Op_Semi val:';' span_id:17)
        )
        (C {(path_prepend_)} {(.)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LC_ALL)
          op: assign_op.Equal
          rhs: {(C)}
          spids: [27]
        )
      ]
    )
    (C {(export)} {(LC_ALL)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (C {(echo)} {(solaris)})
                    (C {(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:54))})
                    (command.Simple
                      words: [{(grep)} {(solais)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:63)
                          fd: -1
                          arg_word: {(/dev/null)}
                        )
                      ]
                    )
                  ]
                  negated: F
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:66)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cr)
                  op: assign_op.Equal
                  rhs: {(SQ (Token id:Id.Lit_Chars val:'\\015' span_id:73))}
                  spids: [71]
                )
              ]
            )
          ]
          spids: [41 68]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:cr)
              op: assign_op.Equal
              rhs: {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:81))}
              spids: [79]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(tr)} {(Id.Lit_Other '@')} {(SQ (Token id:Id.Lit_Chars val:'\\177' span_id:95))}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:98)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 111
          stdin_parts: [
            ('nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn - entire line consumed\n')
            ('y@n - backspace does not change result\n')
            ('y\n')
            ('does not match either yesexpr or noexpr\n')
            ('n\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:101)
          fd: -1
          arg_word: {(in.tmp)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:115)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 128
          stdin_parts: [('N\n') ('Y\n') ('Y\n') ('N\n') ('n\n')]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:118)
          fd: -1
          arg_word: {(xout.tmp)}
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fail) op:assign_op.Equal rhs:{(0)} spids:[130])]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Subshell
          command_list: 
            (command.CommandList
              children: [
                (command.Sentence
                  child: (C {(test-yesno)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:135)
                )
                (command.Sentence
                  child: (C {(test-yesno)} {(3)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:140)
                )
                (C {(cat)})
              ]
            )
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:145)
              fd: -1
              arg_word: {(in.tmp)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:149)
              fd: -1
              arg_word: {(out1.tmp)}
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [155]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(tr)} {(-d)} {(DQ ($ Id.VSub_DollarName '$cr'))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:169)
              fd: -1
              arg_word: {(out1.tmp)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:173)
              fd: -1
              arg_word: {(out.tmp)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[158])]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [179]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(cmp)} {(xout.tmp)} {(out.tmp)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [190]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Subshell
          command_list: 
            (command.CommandList
              children: [
                (command.Sentence
                  child: (C {(test-yesno)} {(3)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:198)
                )
                (command.Sentence
                  child: (C {(test-yesno)})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:201)
                )
                (C {(cat)})
              ]
            )
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:206)
              fd: -1
              arg_word: {(in.tmp)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:210)
              fd: -1
              arg_word: {(out1.tmp)}
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [216]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(tr)} {(-d)} {(DQ ($ Id.VSub_DollarName '$cr'))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:230)
              fd: -1
              arg_word: {(out1.tmp)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:234)
              fd: -1
              arg_word: {(out.tmp)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[219])]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [240]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(cmp)} {(xout.tmp)} {(out.tmp)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [251]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:260)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 270
          stdin_parts: [('Y\n') ('N\n')]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:263)
          fd: -1
          arg_word: {(xout.tmp)}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {(echo)} {(yes)})
            (command.Simple
              words: [{(test-yesno)} {(2)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:281)
                  fd: -1
                  arg_word: {(out1.tmp)}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [287]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(tr)} {(-d)} {(DQ ($ Id.VSub_DollarName '$cr'))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:301)
              fd: -1
              arg_word: {(out1.tmp)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:305)
              fd: -1
              arg_word: {(out.tmp)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[290])]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [311]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(cmp)} {(xout.tmp)} {(out.tmp)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [322]
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:331)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 340
          stdin_parts: [('N\n')]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:334)
          fd: -1
          arg_word: {(xout.tmp)}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(test-yesno)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:343)
              fd: -1
              arg_word: {(/dev/null)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:346)
              fd: -1
              arg_word: {(out1.tmp)}
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [352]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(tr)} {(-d)} {(DQ ($ Id.VSub_DollarName '$cr'))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:366)
              fd: -1
              arg_word: {(out1.tmp)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:370)
              fd: -1
              arg_word: {(out.tmp)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[355])]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [376]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(cmp)} {(xout.tmp)} {(out.tmp)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [387]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{(test-yesno)} {(0)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_LessAnd val:'<&' span_id:398)
              fd: -1
              arg_word: {(-)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:401)
              fd: -1
              arg_word: {(out1.tmp)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'2>' span_id:405)
              fd: 2
              arg_word: {(err.tmp)}
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [411]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(tr)} {(-d)} {(DQ ($ Id.VSub_DollarName '$cr'))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Less val:'<' span_id:425)
              fd: -1
              arg_word: {(out1.tmp)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:429)
              fd: -1
              arg_word: {(out.tmp)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[414])]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [435]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(cmp)} {(xout.tmp)} {(out.tmp)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [446]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(test)} {(-s)} {(err.tmp)})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {(1)}
              spids: [457]
            )
          ]
        )
      ]
    )
    (C {(Exit)} {($ Id.VSub_DollarName '$fail')})
  ]
)