(CommandList
  children: [
    (AndOr
      children: [
        (C {(Lit_Other "[")} 
          {
            (BracedVarSub
              token: <VSub_Name VARIABLES_MAP_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_MAP_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.arraylist.sh)
      }
    )
    (C {(variable) (Lit_Other ":") (Lit_Other ":") (type) (Lit_Other ":") (Lit_Other ":") (define)} 
      {(Map)} {(ArrayList)}
    )
    (FuncDef
      name: "variable::Map::new"
      body: 
        (BraceGroup
          children: [
            (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(Map)} {(DQ (${ VSub_At "@"))})
          ]
          spids: [114]
        )
      spids: [102 113]
    )
    (FuncDef
      name: "variable::Map::containsKey_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::Map::containsKey_c ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 173]
                )
              ]
              spids: [-1 186]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:mapToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [192]
                )
              ]
              spids: [190]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:keyToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [202]
                )
              ]
              spids: [200]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name mapToken))})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [(assign_pair lhs:(LhsName name:items) op:Equal spids:[228])]
              spids: [224]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name RESULT))}
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:items)
                              op: Equal
                              rhs: {(ArrayLiteralPart)}
                              spids: [251]
                            )
                          ]
                          spids: [251]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 249]
                )
              ]
              else_action: [
                (Sentence
                  child: 
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:items)
                          op: Equal
                          rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                          spids: [259]
                        )
                      ]
                      spids: [259]
                    )
                  terminator: <Op_Semi ";">
                )
              ]
              spids: [257 268]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name keyToken))})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:key)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [287]
                )
              ]
              spids: [285]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[298])]
              spids: [296]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[304])]
              spids: [302]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[309])]
              spids: [307]
            )
            (DParen
              child: 
                (ArithBinary
                  op_id: Arith_Comma
                  left: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:size)
                      right: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name items>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [316 322]
                              )
                            }
                        )
                    )
                  right: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:max_index)
                      right: 
                        (ArithBinary
                          op_id: Arith_Minus
                          left: (ArithVarRef name:size)
                          right: (ArithWord w:{(Lit_Digits 1)})
                        )
                    )
                )
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-i'"]
              pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[339])]
              spids: [335]
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_LessEqual
                  left: (ArithVarRef name:i)
                  right: (ArithVarRef name:max_index)
                )
              update: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:i)
                      right: (ArithWord w:{(Lit_Digits 2)})
                    )
                )
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name items>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)}))
                                spids: [373 380]
                              )
                            )
                          }
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentKey)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [385]
                        )
                      ]
                      spids: [385]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other "[")} {(DQ (${ VSub_Name currentKey))} 
                                  {(Lit_Other "=") (Lit_Other "=")} {(DQ (${ VSub_Name key))} {(Lit_Other "]")}
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [-1 415]
                        )
                      ]
                      spids: [-1 423]
                    )
                  ]
                  spids: [364 426]
                )
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [155]
        )
      spids: [143 154]
    )
    (FuncDef
      name: "variable::Map::get"
      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::Map::get ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 476]
                )
              ]
              spids: [-1 489]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:mapToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [495]
                )
              ]
              spids: [493]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:keyToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [505]
                )
              ]
              spids: [503]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name keyToken))})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:key)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [528]
                )
              ]
              spids: [526]
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [(assign_pair lhs:(LhsName name:items) op:Equal spids:[541])]
              spids: [537]
            )
            (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {($ VSub_Name "$mapToken")})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name RESULT))}
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:items)
                              op: Equal
                              rhs: {(ArrayLiteralPart)}
                              spids: [572]
                            )
                          ]
                          spids: [572]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 570]
                )
              ]
              else_action: [
                (Sentence
                  child: 
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:items)
                          op: Equal
                          rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                          spids: [580]
                        )
                      ]
                      spids: [580]
                    )
                  terminator: <Op_Semi ";">
                )
              ]
              spids: [578 589]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[598])]
              spids: [596]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[604])]
              spids: [602]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[609])]
              spids: [607]
            )
            (DParen
              child: 
                (ArithBinary
                  op_id: Arith_Comma
                  left: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:size)
                      right: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name items>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [616 622]
                              )
                            }
                        )
                    )
                  right: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:max_index)
                      right: 
                        (ArithBinary
                          op_id: Arith_Minus
                          left: (ArithVarRef name:size)
                          right: (ArithWord w:{(Lit_Digits 1)})
                        )
                    )
                )
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_LessEqual
                  left: (ArithVarRef name:i)
                  right: (ArithVarRef name:max_index)
                )
              update: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:i)
                      right: (ArithWord w:{(Lit_Digits 2)})
                    )
                )
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name items>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)}))
                                spids: [666 673]
                              )
                            )
                          }
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentKey)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [678]
                        )
                      ]
                      spids: [678]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other "[")} {(DQ (${ VSub_Name currentKey))} 
                                  {(Lit_Other "=") (Lit_Other "=")} {(DQ (${ VSub_Name key))} {(Lit_Other "]")}
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (Sentence
                              child: 
                                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} 
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name items>
                                        bracket_op: 
                                          (ArrayIndex
                                            expr: 
                                              (ArithBinary
                                                op_id: Arith_Plus
                                                left: (ArithWord w:{(${ VSub_Name i)})
                                                right: (ArithWord w:{(Lit_Digits 1)})
                                              )
                                          )
                                        spids: [720 733]
                                      )
                                    )
                                  }
                                )
                              terminator: <Op_Semi ";">
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:RESULT)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name items>
                                          bracket_op: 
                                            (ArrayIndex
                                              expr: 
                                                (ArithBinary
                                                  op_id: Arith_Plus
                                                  left: (ArithWord w:{(${ VSub_Name i)})
                                                  right: (ArithWord w:{(Lit_Digits 1)})
                                                )
                                            )
                                          spids: [740 753]
                                        )
                                      )
                                    }
                                  spids: [738]
                                )
                              ]
                              spids: [738]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [-1 708]
                        )
                      ]
                      spids: [-1 762]
                    )
                  ]
                  spids: [657 765]
                )
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [458]
        )
      spids: [446 457]
    )
    (FuncDef
      name: "_variable::Map::get_p"
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C 
                              {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") 
                                (Lit_Other ":") (get)
                              } {(DQ (${ VSub_At "@"))}
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(stderr)} 
                      {(DQ ("Map does not contain the specified key [") (${ VSub_Number 2) ("]"))}
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 809]
                )
              ]
              spids: [-1 828]
            )
            (C {(echo)} {(DQ ($ VSub_Name "$RESULT"))})
          ]
          spids: [787]
        )
      spids: [775 786]
    )
    (FuncDef
      name: "variable::Map::put"
      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::Map::put ") (${ VSub_At "@"))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 885]
                )
              ]
              spids: [-1 898]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:mapToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [904]
                )
              ]
              spids: [902]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:keyToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [914]
                )
              ]
              spids: [912]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:valueToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 3))}
                  spids: [924]
                )
              ]
              spids: [922]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {($ VSub_Name "$mapToken")})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [(assign_pair lhs:(LhsName name:items) op:Equal spids:[946])]
              spids: [942]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name RESULT))}
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:items)
                              op: Equal
                              rhs: {(ArrayLiteralPart)}
                              spids: [969]
                            )
                          ]
                          spids: [969]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 967]
                )
              ]
              else_action: [
                (Sentence
                  child: 
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:items)
                          op: Equal
                          rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                          spids: [977]
                        )
                      ]
                      spids: [977]
                    )
                  terminator: <Op_Semi ";">
                )
              ]
              spids: [975 986]
            )
            (C {(log)} 
              {
                (DQ ("MAP: ") 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(_variable) (Lit_Other ":") (Lit_Other ":") (value_p)} 
                            {($ VSub_Name "$mapToken")}
                          )
                        ]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [993 1000]
                  )
                )
              }
            )
            (C {(log)} 
              {
                (DQ ("Adding new key/value to items [") ($ VSub_Name "$keyToken") ("]=[") 
                  ($ VSub_Name "$valueToken") ("] -> ") 
                  (BracedVarSub
                    token: <VSub_Name items>
                    bracket_op: (WholeArray op_id:Lit_At)
                    suffix_op: 
                      (StringUnary
                        op_id: VTest_ColonPlus
                        arg_word: 
                          {
                            (BracedVarSub
                              token: <VSub_Name items>
                              bracket_op: (WholeArray op_id:Lit_At)
                              spids: [1018 1023]
                            )
                          }
                      )
                    spids: [1012 1024]
                  )
                )
              }
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {($ VSub_Name "$keyToken")})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:key)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1039]
                )
              ]
              spids: [1037]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {($ VSub_Name "$valueToken")})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:value)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1058]
                )
              ]
              spids: [1056]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[1069])]
              spids: [1067]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[1074])]
              spids: [1072]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[1079])]
              spids: [1077]
            )
            (DParen
              child: 
                (ArithBinary
                  op_id: Arith_Comma
                  left: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:size)
                      right: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name items>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [1086 1092]
                              )
                            }
                        )
                    )
                  right: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:max_index)
                      right: 
                        (ArithBinary
                          op_id: Arith_Minus
                          left: (ArithVarRef name:size)
                          right: (ArithWord w:{(Lit_Digits 1)})
                        )
                    )
                )
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_LessEqual
                  left: (ArithVarRef name:i)
                  right: (ArithVarRef name:max_index)
                )
              update: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:i)
                      right: (ArithWord w:{(Lit_Digits 2)})
                    )
                )
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} 
                          {
                            (BracedVarSub
                              token: <VSub_Name items>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)}))
                              spids: [1135 1142]
                            )
                          }
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentKey)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [1146]
                        )
                      ]
                      spids: [1146]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other "[")} {(DQ (${ VSub_Name currentKey))} 
                                  {(Lit_Other "=") (Lit_Other "=")} {(DQ (${ VSub_Name key))} {(Lit_Other "]")}
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(items) (Lit_Other "[")})
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_Plus
                                  left: (ArithWord w:{(${ VSub_Name i)})
                                  right: (ArithWord w:{(Lit_Digits 1)})
                                )
                            )
                            (C {(Lit_Other "]") (Lit_Other "=") (DQ (${ VSub_Name valueToken))})
                            (C {(variable) (Lit_Other ":") (Lit_Other ":") (set)} 
                              {(${ VSub_Name mapToken)} {(ArrayList)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name items>
                                    bracket_op: (WholeArray op_id:Arith_Star)
                                    spids: [1213 1218]
                                  )
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(0)}
                            )
                          ]
                          spids: [-1 1176]
                        )
                      ]
                      spids: [-1 1227]
                    )
                  ]
                  spids: [1127 1230]
                )
            )
            (C 
              {(items) (Lit_Other "[") 
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name items>
                    prefix_op: VSub_Pound
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1241 1247]
                  )
                ) (Lit_Other "]") (Lit_Other "=") (DQ (${ VSub_Name keyToken))
              }
            )
            (C 
              {(items) (Lit_Other "[") 
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name items>
                    prefix_op: VSub_Pound
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1261 1267]
                  )
                ) (Lit_Other "]") (Lit_Other "=") (DQ (${ VSub_Name valueToken))
              }
            )
            (C {(log)} 
              {
                (DQ ("Added new key/value to items [") ($ VSub_Name "$keyToken") ("]=[") 
                  ($ VSub_Name "$valueToken") ("] -> ") (BracedVarSub token:<VSub_Name items> bracket_op:(WholeArray op_id:Lit_At) spids:[12861291])
                )
              }
            )
            (C {(variable) (Lit_Other ":") (Lit_Other ":") (set)} {(${ VSub_Name mapToken)} 
              {(ArrayList)} {(DQ (BracedVarSub token:<VSub_Name items> bracket_op:(WholeArray op_id:Arith_Star) spids:[13071312]))}
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
          spids: [867]
        )
      spids: [855 866]
    )
    (FuncDef
      name: "variable::Map::print"
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:mapToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1350]
                )
              ]
              spids: [1348]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:indent)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Number 2>
                          suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                          spids: [1362 1365]
                        )
                      )
                    }
                  spids: [1360]
                )
              ]
              spids: [1358]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {($ VSub_Name "$mapToken")})
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [(assign_pair lhs:(LhsName name:items) op:Equal spids:[1384])]
              spids: [1380]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name RESULT))}
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:items)
                          op: Equal
                          rhs: {(ArrayLiteralPart)}
                          spids: [1409]
                        )
                      ]
                      spids: [1409]
                    )
                    (C {(echo)} {(DQ (${ VSub_Name indent) ("MAP [") (${ VSub_Name mapToken) ("=()]"))})
                  ]
                  spids: [-1 1405]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:items)
                      op: Equal
                      rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                      spids: [1433]
                    )
                  ]
                  spids: [1433]
                )
                (C {(echo)} 
                  {
                    (DQ (${ VSub_Name indent) ("MAP [") (${ VSub_Name mapToken) ("=(") 
                      (BracedVarSub
                        token: <VSub_Name items>
                        bracket_op: (WholeArray op_id:Lit_At)
                        spids: [1452 1457]
                      ) (")]")
                    )
                  }
                )
              ]
              spids: [1429 1462]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[1471])]
              spids: [1469]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[1476])]
              spids: [1474]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[1481])]
              spids: [1479]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentValue) op:Equal spids:[1486])]
              spids: [1484]
            )
            (DParen
              child: 
                (ArithBinary
                  op_id: Arith_Comma
                  left: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:size)
                      right: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name items>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [1495 1501]
                              )
                            }
                        )
                    )
                  right: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:max_index)
                      right: 
                        (ArithBinary
                          op_id: Arith_Minus
                          left: (ArithVarRef name:size)
                          right: (ArithWord w:{(Lit_Digits 1)})
                        )
                    )
                )
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_LessEqual
                  left: (ArithVarRef name:i)
                  right: (ArithVarRef name:max_index)
                )
              update: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:i)
                      right: (ArithWord w:{(Lit_Digits 2)})
                    )
                )
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} 
                          {
                            (BracedVarSub
                              token: <VSub_Name items>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)}))
                              spids: [1544 1551]
                            )
                          }
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentKey)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [1555]
                        )
                      ]
                      spids: [1555]
                    )
                    (Sentence
                      child: 
                        (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} 
                          {
                            (BracedVarSub
                              token: <VSub_Name items>
                              bracket_op: 
                                (ArrayIndex
                                  expr: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:i)
                                      right: (ArithWord w:{(Lit_Digits 1)})
                                    )
                                )
                              spids: [1568 1579]
                            )
                          }
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentValue)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [1583]
                        )
                      ]
                      spids: [1583]
                    )
                    (C {(echo)} 
                      {
                        (DQ (${ VSub_Name indent) ("    [") (${ VSub_Name currentKey) ("]=[") 
                          (${ VSub_Name currentValue) ("]")
                        )
                      }
                    )
                  ]
                  spids: [1536 1609]
                )
            )
          ]
          spids: [1345]
        )
      spids: [1333 1344]
    )
    (FuncDef
      name: "variable::Map::debug"
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:token)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1631]
                )
              ]
              spids: [1629]
            )
            (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {($ VSub_Name "$mapToken")})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name RESULT))}
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ ("{}"))}
                          spids: [1670]
                        )
                      ]
                      spids: [1670]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [-1 1667]
                )
              ]
              spids: [-1 1679]
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:items)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name RESULT>
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [1690 1695]
                              )
                            )
                          }
                        ]
                      )
                    }
                  spids: [1687]
                )
              ]
              spids: [1683]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair lhs:(LhsName name:size) op:Equal spids:[1703])
                (assign_pair lhs:(LhsName name:declare) op:Equal spids:[1705])
                (assign_pair lhs:(LhsName name:max_index) op:Equal spids:[1707])
              ]
              spids: [1701]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[1712])]
              spids: [1710]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentValue) op:Equal spids:[1717])]
              spids: [1715]
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:formatted)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [1725]
                )
              ]
              spids: [1721]
            )
            (DParen
              child: 
                (ArithBinary
                  op_id: Arith_Comma
                  left: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:size)
                      right: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name items>
                                prefix_op: VSub_Pound
                                bracket_op: (WholeArray op_id:Lit_At)
                                spids: [1735 1741]
                              )
                            }
                        )
                    )
                  right: 
                    (BinaryAssign
                      op_id: Arith_Equal
                      left: (LhsName name:max_index)
                      right: 
                        (ArithBinary
                          op_id: Arith_Minus
                          left: (ArithVarRef name:size)
                          right: (ArithWord w:{(Lit_Digits 1)})
                        )
                    )
                )
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_LessEqual
                  left: (ArithVarRef name:i)
                  right: (ArithVarRef name:max_index)
                )
              update: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithVarRef name:i)
                      right: (ArithWord w:{(Lit_Digits 2)})
                    )
                )
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} 
                          {
                            (BracedVarSub
                              token: <VSub_Name items>
                              bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)}))
                              spids: [1784 1791]
                            )
                          }
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentKey)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [1795]
                        )
                      ]
                      spids: [1795]
                    )
                    (Sentence
                      child: 
                        (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} 
                          {
                            (BracedVarSub
                              token: <VSub_Name items>
                              bracket_op: 
                                (ArrayIndex
                                  expr: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:i)
                                      right: (ArithWord w:{(Lit_Digits 1)})
                                    )
                                )
                              spids: [1808 1819]
                            )
                          }
                        )
                      terminator: <Op_Semi ";">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentValue)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [1823]
                        )
                      ]
                      spids: [1823]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:formatted)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {(DQ (${ VSub_Name currentKey) ("=") (${ VSub_Name currentValue))}
                                ]
                              )
                            }
                          spids: [1831]
                        )
                      ]
                      spids: [1831]
                    )
                  ]
                  spids: [1776 1845]
                )
            )
            (C 
              {(variable) (Lit_Other ":") (Lit_Other ":") (debug) (Lit_Other ":") (Lit_Other ":") (join)} {(DQ (", "))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name formatted>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [1862 1867]
                  )
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {(DQ ("{") ($ VSub_Name "$RESULT") ("}"))}
                  spids: [1871]
                )
              ]
              spids: [1871]
            )
          ]
          spids: [1626]
        )
      spids: [1614 1625]
    )
    (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 1898]
        )
      ]
      spids: [-1 1903]
    )
    (Sentence
      child: 
        (C {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (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: [1926]
        )
      ]
      spids: [1926]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ ("key one"))})
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:key1) op:Equal rhs:{(${ VSub_Name RESULT)} spids:[1944])]
      spids: [1944]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ ("value one"))})
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:value1)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [1962]
        )
      ]
      spids: [1962]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ ("key two"))})
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:key2) op:Equal rhs:{(${ VSub_Name RESULT)} spids:[1980])]
      spids: [1980]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ ("value two"))})
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:value2)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [1998]
        )
      ]
      spids: [1998]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ":") (Lit_Other ":") (new)} {(String)} {(DQ ("no such key"))})
      terminator: <Op_Semi ";">
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:keyUnknown)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [2016]
        )
      ]
      spids: [2016]
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (containsKey_c)} {($ VSub_Name "$vCode")} {($ VSub_Name "$keyUnknown")}
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(1)} {($ VSub_QMark "$?")} 
      {(DQ ("containsKey false"))}
    )
    (C {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (put)} 
      {($ VSub_Name "$vCode")} {($ VSub_Name "$key1")} {($ VSub_Name "$value1")}
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (containsKey_c)} {($ VSub_Name "$vCode")} {($ VSub_Name "$key1")}
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {($ VSub_QMark "$?")} 
      {(DQ ("containsKey one true"))}
    )
    (Sentence
      child: 
        (C {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (get)} 
          {(DQ ($ VSub_Name "$vCode"))} {($ VSub_Name "$key1")}
        )
      terminator: <Op_Semi ";">
    )
    (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name RESULT))} 
      {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ ("value one"))} {(DQ ($ VSub_Name "$RESULT"))} {(DQ ("get key one"))}
    )
    (C {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (put)} 
      {($ VSub_Name "$vCode")} {($ VSub_Name "$key2")} {($ VSub_Name "$value2")}
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (containsKey_c)} {($ VSub_Name "$vCode")} {($ VSub_Name "$key2")}
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {($ VSub_QMark "$?")} 
      {(DQ ("containsKey two true"))}
    )
    (Sentence
      child: 
        (C {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (get)} 
          {($ VSub_Name "$vCode")} {($ VSub_Name "$key2")}
        )
      terminator: <Op_Semi ";">
    )
    (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name RESULT))} 
      {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ ("value two"))} {(DQ ($ VSub_Name "$RESULT"))} {(DQ ("get key two"))}
    )
    (C {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (put)} 
      {($ VSub_Name "$vCode")} {($ VSub_Name "$key1")} {($ VSub_Name "$value2")}
    )
    (C 
      {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (containsKey_c)} {($ VSub_Name "$vCode")} {($ VSub_Name "$key1")}
    )
    (C {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(0)} {($ VSub_QMark "$?")} 
      {(DQ ("containsKey one replaced true"))}
    )
    (Sentence
      child: 
        (C {(variable) (Lit_Other ":") (Lit_Other ":") (Map) (Lit_Other ":") (Lit_Other ":") (get)} 
          {($ VSub_Name "$vCode")} {($ VSub_Name "$key1")}
        )
      terminator: <Op_Semi ";">
    )
    (C {(variable) (Lit_Other ":") (Lit_Other ":") (value)} {(DQ (${ VSub_Name RESULT))} 
      {(assert) (Lit_Other ":") (Lit_Other ":") (equals)} {(DQ ("value two"))} {(DQ ($ VSub_Name "$RESULT"))} {(DQ ("get key one replaced"))}
    )
    (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: [2326 2330]
                        )
                      } {(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 2352]
        )
      ]
      spids: [-1 2361]
    )
  ]
)