(CommandList
  children: [
    (C {(Lit_Other ':')} 
      {
        (BracedVarSub
          token: <VSub_Name srcdir>
          suffix_op: (StringUnary op_id:VTest_Equals arg_word:{(.)})
          spids: [5 9]
        )
      }
    )
    (Sentence child:(C {(.)} {(DQ ($ VSub_Name '$srcdir') (/init.sh))}) terminator:<Op_Semi ';'>)
    (C {(path_prepend_)} {(.)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:too_big)
          op: Equal
          rhs: {(99999999999999999999999999999999999999999999999999999999999999999999)}
          spids: [24]
        )
      ]
      spids: [24]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(0)} spids:[27])]
      spids: [27]
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {(1)}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[38])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[42])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[47])]
          spids: [47]
        )
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {(-1)}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[54])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[58])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[63])]
          spids: [63]
        )
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {(1k)}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[70])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[74])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[79])]
          spids: [79]
        )
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {(${ VSub_Name too_big) (h)}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[89])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[93])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[98])]
          spids: [98]
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {($ VSub_Name '$too_big')}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[105])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[109])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[114])]
          spids: [114]
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {(x)}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[121])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[125])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[130])]
          spids: [130]
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {(9x)}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[137])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[141])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[146])]
          spids: [146]
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {(010)}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[153])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[157])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[162])]
          spids: [162]
        )
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(test-xstrtoimax)} {(MiB)}]
          redirects: [
            (Redir op_id:Redir_DGreat fd:-1 arg_word:{(out)} spids:[169])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[173])
          ]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[178])]
          spids: [178]
        )
      ]
      op_id: Op_DPipe
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (C {(echo)} {(solaris)})
                    (C {(tr)} {(-d)} {(SQ <'\\r'>)})
                    (SimpleCommand
                      words: [{(grep)} {(solais)}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[210])]
                    )
                  ]
                  negated: False
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:cr) op:Equal rhs:{(SQ <'\\015'>)} spids:[218])]
              spids: [218]
            )
          ]
          spids: [-1 215]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:cr) op:Equal rhs:{(SQ <'\\r'>)} spids:[226])]
          spids: [226]
        )
      ]
      spids: [223 231]
    )
    (SimpleCommand
      words: [{(tr)} {(-d)} {(DQ ($ VSub_Name '$cr'))}]
      redirects: [
        (Redir op_id:Redir_Less fd:-1 arg_word:{(out)} spids:[248])
        (Redir op_id:Redir_Great fd:-1 arg_word:{(k)} spids:[252])
      ]
      more_env: [(env_pair name:LC_ALL val:{(C)} spids:[237])]
    )
    (C {(mv)} {(k)} {(out)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(exp)} spids:[268])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('1->1 ()\n') ('-1->-1 ()\n') ('1k->1024 ()\n') ("invalid suffix in X argument '") 
                (${ VSub_Name too_big) ("h'\n") ("X argument '") ($ VSub_Name '$too_big') ("' too large\n") ("invalid X argument 'x'\n") 
                ("invalid suffix in X argument '9x'\n") ('010->8 ()\n') ('MiB->1048576 ()\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [272]
        )
      ]
    )
    (AndOr
      children: [
        (C {(compare)} {(exp)} {(out)})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(1)} spids:[300])]
          spids: [300]
        )
      ]
      op_id: Op_DPipe
    )
    (C {(Exit)} {($ VSub_Name '$result')})
  ]
)