(CommandList
  children: [
    (AndOr
      children: [
        (C {(Lit_Other "[")} 
          {
            (BracedVarSub
              token: <VSub_Name VARIABLES_ARRAYLIST_SH>
              suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(true)})
              spids: [9 13]
            )
          } {(Lit_Other "]")}
        )
        (ControlFlow token:<ControlFlow_Return return>)
      ]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_Declare
      flags: ["'-g'"]
      pairs: [
        (assign_pair
          lhs: (LhsName name:VARIABLES_ARRAYLIST_SH)
          op: Equal
          rhs: {(true)}
          spids: [25]
        )
      ]
      spids: [21]
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")})
          spids: [31 36]
        ) (/common.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")})
          spids: [41 46]
        ) (/logger.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")})
          spids: [51 56]
        ) (/variables.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")})
          spids: [61 66]
        ) (/variables.atom.sh)
      }
    )
    (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (define)} 
      {(ArrayList)}
    )
    (FuncDef
      name: "variable::ArrayList::new"
      body: 
        (BraceGroup
          children: [
            (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(ArrayList)} {(DQ (${ VSub_At "@"))})
          ]
          spids: [106]
        )
      spids: [94 105]
    )
    (FuncDef
      name: "variable::ArrayList::append"
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ("variable::ArrayList::append ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 155]
                )
              ]
              spids: [-1 168]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_token)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [173]
                )
              ]
              spids: [171]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:value_token)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [179]
                )
              ]
              spids: [177]
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name list_token))} {(ArrayList)}
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_value)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (BracedVarSub
                              token: <VSub_Name VARIABLES_VALUES>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$list_token")}))
                              spids: [208 213]
                            )
                          }
                        ]
                      )
                    }
                  spids: [206]
                )
              ]
              spids: [202]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_value)
                  op: PlusEqual
                  rhs: {(ArrayLiteralPart words:[{(${ VSub_Name value_token)}])}
                  spids: [217]
                )
              ]
              spids: [217]
            )
            (C 
              {(VARIABLES_VALUES) (Lit_Other "[") ($ VSub_Name "$list_token") (Lit_Other "]") 
                (Lit_Other "=") (BracedVarSub token:<VSub_Name list_value> bracket_op:(WholeArray op_id:Lit_At) spids:[230235])
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name list_value>
                        prefix_op: VSub_Pound
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [240 246]
                      )
                    }
                  spids: [239]
                )
              ]
              spids: [239]
            )
          ]
          spids: [137]
        )
      spids: [125 136]
    )
    (FuncDef
      name: "variable::ArrayList::prepend"
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ("variable::ArrayList::prepend ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 281]
                )
              ]
              spids: [-1 294]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_token)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [299]
                )
              ]
              spids: [297]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:value_token)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [305]
                )
              ]
              spids: [303]
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name list_token))} {(ArrayList)}
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_value)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (BracedVarSub
                              token: <VSub_Name VARIABLES_VALUES>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$list_token")}))
                              spids: [334 339]
                            )
                          }
                        ]
                      )
                    }
                  spids: [332]
                )
              ]
              spids: [328]
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:new_value)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {(DQ (${ VSub_Name value_token))}
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name list_value>
                                bracket_op: (WholeArray op_id:Lit_At)
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonPlus
                                    arg_word: 
                                      {
                                        (BracedVarSub
                                          token: <VSub_Name list_value>
                                          bracket_op: (WholeArray op_id:Lit_At)
                                          spids: [362 367]
                                        )
                                      }
                                  )
                                spids: [356 368]
                              )
                            )
                          }
                        ]
                      )
                    }
                  spids: [347]
                )
              ]
              spids: [343]
            )
            (C 
              {(VARIABLES_VALUES) (Lit_Other "[") ($ VSub_Name "$list_token") (Lit_Other "]") 
                (Lit_Other "=") (BracedVarSub token:<VSub_Name new_value> bracket_op:(WholeArray op_id:Lit_At) spids:[378383])
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name list_value>
                        prefix_op: VSub_Pound
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [388 394]
                      )
                    }
                  spids: [387]
                )
              ]
              spids: [387]
            )
          ]
          spids: [263]
        )
      spids: [251 262]
    )
    (FuncDef
      name: "variable::ArrayList::length"
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ("variable::ArrayList::length ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 429]
                )
              ]
              spids: [-1 442]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_token)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [447]
                )
              ]
              spids: [445]
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name list_token))} {(ArrayList)}
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name list_token))})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:value)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(DQ (${ VSub_Name RESULT))}])}
                  spids: [487]
                )
              ]
              spids: [483]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name value>
                          prefix_op: VSub_Pound
                          bracket_op: (WholeArray op_id:Lit_At)
                          spids: [499 505]
                        )
                      )
                    }
                  spids: [497]
                )
              ]
              spids: [497]
            )
          ]
          spids: [411]
        )
      spids: [399 410]
    )
    (FuncDef
      name: "variable::ArrayList::index"
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ("variables_list::index ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 541]
                )
              ]
              spids: [-1 554]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_token)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [559]
                )
              ]
              spids: [557]
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name list_token))} {(ArrayList)}
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:index)
                  op: Equal
                  rhs: {($ VSub_Number "$2")}
                  spids: [584]
                )
              ]
              spids: [582]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name list_token))})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:value)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                  spids: [605]
                )
              ]
              spids: [601]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name value>
                        bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$index")}))
                        spids: [614 619]
                      )
                    }
                  spids: [613]
                )
              ]
              spids: [613]
            )
          ]
          spids: [523]
        )
      spids: [511 522]
    )
    (FuncDef
      name: "_variable::ArrayList::index_p"
      body: 
        (BraceGroup
          children: [
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") 
                (index)
              } {(DQ (${ VSub_At "@"))}
            )
            (C {(echo)} {(DQ ($ VSub_Name "$RESULT"))})
          ]
          spids: [636]
        )
      spids: [624 635]
    )
    (FuncDef
      name: "variable::ArrayList::first"
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ("variable::ArrayList::first ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 693]
                )
              ]
              spids: [-1 706]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_token)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [711]
                )
              ]
              spids: [709]
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name list_token))} {(ArrayList)}
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") 
                (index)
              } {(${ VSub_Name list_token)} {(0)}
            )
          ]
          spids: [675]
        )
      spids: [663 674]
    )
    (FuncDef
      name: "_variable::ArrayList::first_p"
      body: 
        (BraceGroup
          children: [
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") 
                (first)
              } {(DQ (${ VSub_At "@"))}
            )
            (C {(echo)} {(DQ (${ VSub_Name RESULT))})
          ]
          spids: [763]
        )
      spids: [751 762]
    )
    (FuncDef
      name: "variable::ArrayList::rest"
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ("variable::ArrayList::rest ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 822]
                )
              ]
              spids: [-1 835]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:list_token)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [840]
                )
              ]
              spids: [838]
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name list_token))} {(ArrayList)}
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name list_token))})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:values)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$RESULT")}])}
                  spids: [880]
                )
              ]
              spids: [876]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name values>
                          bracket_op: (WholeArray op_id:Lit_At)
                          suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 1)}))
                          spids: [888 895]
                        )
                      )
                    }
                  spids: [886]
                )
              ]
              spids: [886]
            )
          ]
          spids: [804]
        )
      spids: [792 803]
    )
    (FuncDef
      name: "_variable::ArrayList::rest_p"
      body: 
        (BraceGroup
          children: [
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") 
                (rest)
              } {(DQ (${ VSub_At "@"))}
            )
            (C {(echo)} {(DQ (${ VSub_Name RESULT))})
          ]
          spids: [913]
        )
      spids: [901 912]
    )
    (FuncDef
      name: "variable::ArrayList::isEmpty_c"
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ("variable::ArrayList::isEmpty_c ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 981]
                )
              ]
              spids: [-1 994]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:token)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [999]
                )
              ]
              spids: [997]
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name token))} {(ArrayList)}
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name token))})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:value)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                  spids: [1043]
                )
              ]
              spids: [1039]
            )
            (DBracket
              expr: 
                (BoolBinary
                  op_id: BoolBinary_eq
                  left: 
                    {
                      (BracedVarSub
                        token: <VSub_Name value>
                        prefix_op: VSub_Pound
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [1053 1059]
                      )
                    }
                  right: {(0)}
                )
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_QMark "$?")})
          ]
          spids: [963]
        )
      spids: [951 962]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {($ VSub_Number "$0")} {(KW_Bang "!") (Lit_Other "=")} 
                  {($ VSub_Name "$BASH_SOURCE")} {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(ControlFlow token:<ControlFlow_Return return>)]
          spids: [-1 1093]
        )
      ]
      spids: [-1 1098]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (new)}
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [1130]
        )
      ]
      spids: [1130]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(Identifier)} {(DQ ("+"))})
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(Integer)} {(5)})
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(Integer)} {(2)})
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (type)} {($ VSub_Name "$vCode")})
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(ArrayList)} {(DQ ($ VSub_Name "$RESULT"))} 
      {(DQ ("List type"))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (index)} {($ VSub_Name "$vCode")} {(0)}
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (type)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(Identifier)} {(DQ ($ VSub_Name "$RESULT"))} 
      {(DQ ("List first item type"))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (index)} {($ VSub_Name "$vCode")} {(1)}
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (type)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(Integer)} {(DQ (${ VSub_Name RESULT))} 
      {(DQ ("List first item type"))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (index)} {($ VSub_Name "$vCode")} {(2)}
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (type)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(Integer)} {(DQ (${ VSub_Name RESULT))} 
      {(DQ ("List first item type"))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (new)}
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [1392]
        )
      ]
      spids: [1392]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ (a))})
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:A)
              op: Equal
              rhs: {(${ VSub_Name RESULT)}
              spids: [1410]
            )
          ]
          spids: [1410]
        )
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {($ VSub_Name "$A")}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ (b))})
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:B)
              op: Equal
              rhs: {(${ VSub_Name RESULT)}
              spids: [1444]
            )
          ]
          spids: [1444]
        )
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {($ VSub_Name "$B")}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ (c))})
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:C)
              op: Equal
              rhs: {(${ VSub_Name RESULT)}
              spids: [1478]
            )
          ]
          spids: [1478]
        )
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {($ VSub_Name "$C")}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (index)} {($ VSub_Name "$vCode")} {(1)}
        )
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ ($ VSub_Name "$B"))} 
      {(DQ ($ VSub_Name "$RESULT"))} {(DQ (index_p))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (first)} {($ VSub_Name "$vCode")}
        )
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ ($ VSub_Name "$A"))} 
      {(DQ ($ VSub_Name "$RESULT"))} {(DQ (first_p))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (rest)} {($ VSub_Name "$vCode")} {(0)}
        )
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} 
      {(DQ (${ VSub_Name B) (" ") (${ VSub_Name C))} {(DQ ($ VSub_Name "$RESULT"))} {(DQ (rest_p))}
    )
    (Sentence
      child: 
        (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(-name)} {(DQ (EVAL_RESULT))} {(Integer)} 
          {(4)}
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_Declare
      pairs: [
        (assign_pair
          lhs: (LhsName name:varname)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1623]
        )
      ]
      spids: [1621]
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ (EVAL_RESULT))} 
      {(DQ (${ VSub_Name varname))} {(DQ ("Non-auto variable name"))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (type)} {(DQ (${ VSub_Name varname))})
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(Integer)} {(DQ (${ VSub_Name RESULT))} 
      {(DQ ("Non-auto type"))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name varname))})
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(4)} {(DQ (${ VSub_Name RESULT))} 
      {(DQ ("Non-auto value"))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (new)}
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [1725]
        )
      ]
      spids: [1725]
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (isEmpty_c)} {(${ VSub_Name vCode)}
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {($ VSub_QMark "$?")} 
      {(DQ ("Return code true (0)"))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(Identifier)} {(DQ ("+"))})
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)}
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (isEmpty_c)} {(${ VSub_Name vCode)}
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(1)} {($ VSub_QMark "$?")} 
      {(DQ ("Return code false (1)"))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (new)}
        )
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [1823]
        )
      ]
      spids: [1823]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(Integer)} {(5)})
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(Integer)} {(2)})
      terminator: <Op_Semi ";">
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (append)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (index)} {($ VSub_Name "$vCode")} {(0)}
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(5)} {(DQ ($ VSub_Name "$RESULT"))} 
      {(DQ ("append / 0"))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ":") (Lit_Other ":") (ArrayList) (Lit_Other ":") (Lit_Other ":") (index)} {($ VSub_Name "$vCode")} {(1)}
        )
      terminator: <Op_Semi ";">
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ ($ VSub_Name "$RESULT"))})
      terminator: <Op_Semi ";">
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(2)} {(DQ ($ VSub_Name "$RESULT"))} 
      {(DQ ("append / 1"))}
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (report)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  children: [
                    (C {(Lit_Other "[")} 
                      {
                        (BracedVarSub
                          token: <VSub_Number 1>
                          suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)})
                          spids: [1979 1983]
                        )
                      } {(Lit_Other "]")}
                    )
                    (C {(Lit_Other "[")} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "=") (Lit_Other "=")} 
                      {(DQ (debug))} {(Lit_Other "]")}
                    )
                  ]
                  op_id: Op_DAmp
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(variable) (Lit_Other ":") (Lit_Other ":") (printMetadata)})]
          spids: [-1 2005]
        )
      ]
      spids: [-1 2014]
    )
  ]
)