(CommandList
  children: [
    (AndOr
      children: [
        (C {(Lit_Other '[')} 
          {
            (BracedVarSub
              token: <VSub_Name EVALUATOR_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:EVALUATOR_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]
        ) (/variables.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [51 56]
        ) (/callable.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [61 66]
        ) (/specialforms.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [71 76]
        ) (/specialforms.lambda.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [81 86]
        ) (/environment.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [91 96]
        ) (/evaluator.functions.builtin.sh)
      }
    )
    (Assignment
      keyword: Assign_Declare
      flags: ["'-g'"]
      pairs: [(assign_pair lhs:(LhsName name:EVALUATOR_DEBUG) op:Equal rhs:{(0)} spids:[104])]
      spids: [100]
    )
    (FuncDef
      name: 'evaluator::eval'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name EVALUATOR_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('evaluator::eval ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 157]
                )
              ]
              spids: [-1 170]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:envToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [176]
                )
              ]
              spids: [174]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:exprToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [186]
                )
              ]
              spids: [184]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') 
                            (Lit_Other ':') (instanceOf)
                          } {(DQ (${ VSub_Name exprToken))} {(Atom)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(variable) (Lit_Other ':') (Lit_Other ':') (clone)} 
                      {(DQ (${ VSub_Name exprToken))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [229]
                        )
                      ]
                      spids: [229]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [-1 214]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') 
                            (Lit_Other ':') (instanceOf)
                          } {(DQ (${ VSub_Name exprToken))} {(Callable)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(variable) (Lit_Other ':') (Lit_Other ':') (clone)} 
                      {(DQ (${ VSub_Name exprToken))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [274]
                        )
                      ]
                      spids: [274]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [240 259]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') 
                            (Lit_Other ':') (instanceOf)
                          } {(DQ (${ VSub_Name exprToken))} {(Identifier)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} 
                      {(DQ (${ VSub_Name envToken))} {(DQ (${ VSub_Name exprToken))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [325]
                        )
                      ]
                      spids: [325]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [285 304]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') 
                            (Lit_Other ':') (instanceOf)
                          } {(DQ (${ VSub_Name exprToken))} {(LinkedList)}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval_list)} {(DQ (${ VSub_At '@'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [370]
                        )
                      ]
                      spids: [370]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [336 355]
                )
              ]
              else_action: [
                (C {(stderr)} 
                  {
                    (DQ ('evaluator::eval / Unhandled type for token [') ($ VSub_Name '$exprToken') 
                      (']')
                    )
                  }
                )
                (C {(variable) (Lit_Other ':') (Lit_Other ':') (printMetadata)})
                (C {(exit)} {(1)})
              ]
              spids: [381 405]
            )
            (C {(stderr)} {(DQ ('should never get here'))})
            (C {(exit)} {(1)})
          ]
          spids: [139]
        )
      spids: [130 138]
    )
    (FuncDef
      name: 'evaluator::evalFromLinkedList'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name EVALUATOR_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('evaluator::eval ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 449]
                )
              ]
              spids: [-1 462]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:envToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [468]
                )
              ]
              spids: [466]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Declare
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:expressions)
                      op: Equal
                      rhs: {(DQ (${ VSub_Number 2))}
                      spids: [478]
                    )
                  ]
                  spids: [476]
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair lhs:(LhsName name:currentSexp) op:Equal spids:[497])
                (assign_pair lhs:(LhsName name:currentResult) op:Equal spids:[499])
              ]
              spids: [495]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (Pipeline
                      children: [
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (isEmpty_c)
                          } {(DQ (${ VSub_Name expressions))}
                        )
                      ]
                      negated: True
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (first)
                          } {(DQ (${ VSub_Name expressions))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentSexp)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [541]
                        )
                      ]
                      spids: [541]
                    )
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (rest)
                          } {(DQ (${ VSub_Name expressions))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:expressions)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [563]
                        )
                      ]
                      spids: [563]
                    )
                    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {($ VSub_Name '$envToken')} 
                      {($ VSub_Name '$currentSexp')}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentResult)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [579]
                        )
                      ]
                      spids: [579]
                    )
                  ]
                  spids: [522 585]
                )
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name currentResult))}
                  spids: [588]
                )
              ]
              spids: [588]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [431]
        )
      spids: [422 430]
    )
    (FuncDef
      name: 'evaluator::eval_list'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name EVALUATOR_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('evaluator::eval_list ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 630]
                )
              ]
              spids: [-1 643]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:envToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [649]
                )
              ]
              spids: [647]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:listToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [659]
                )
              ]
              spids: [657]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (C 
                              {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') 
                                (Lit_Other ':') (instanceOf)
                              } {($ VSub_Name '$listToken')} {(LinkedList)}
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(stderr)} {(DQ ('evaluator::eval_list / must be a list'))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 685]
                )
              ]
              spids: [-1 700]
            )
            (C 
              {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') 
                (length)
              } {(DQ (${ VSub_Name listToken))}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_eq
                              left: {(DQ (${ VSub_Name RESULT))}
                              right: {(0)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(Nil)} {(DQ )})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [751]
                        )
                      ]
                      spids: [751]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [-1 736]
                )
              ]
              spids: [-1 762]
            )
            (C 
              {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') 
                (first)
              } {(DQ (${ VSub_Name listToken))}
            )
            (Sentence
              child: 
                (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name envToken))} 
                  {(DQ (${ VSub_Name RESULT))}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:headItem)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [802]
                )
              ]
              spids: [800]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name headItem))})
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:headType)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [825]
                )
              ]
              spids: [823]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name headItem))})
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:headValue)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [848]
                )
              ]
              spids: [846]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                    (Lit_Other ':') (rest)
                  } {($ VSub_Name '$listToken')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rest)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [880]
                )
              ]
              spids: [878]
            )
            (Case
              to_match: {(DQ (${ VSub_Name headType))}
              arms: [
                (case_arm
                  pat_list: [{(BuiltinFunction)}]
                  action: [
                    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (call_builtinFunction)} 
                      {(DQ (${ VSub_Name envToken))} {(DQ (${ VSub_Name headItem))} {(DQ (${ VSub_Name rest))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [928]
                        )
                      ]
                      spids: [928]
                    )
                  ]
                  spids: [900 901 936 -1]
                )
                (case_arm
                  pat_list: [{(BuiltinMacro)}]
                  action: [
                    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (call_builtinMacro)} 
                      {(DQ (${ VSub_Name envToken))} {(DQ (${ VSub_Name headItem))} {(DQ (${ VSub_Name rest))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [970]
                        )
                      ]
                      spids: [970]
                    )
                  ]
                  spids: [939 940 978 -1]
                )
                (case_arm
                  pat_list: [{(SpecialForm)}]
                  action: [
                    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (call_specialForm)} 
                      {(DQ (${ VSub_Name envToken))} {(DQ (${ VSub_Name headItem))} {(DQ (${ VSub_Name rest))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [1012]
                        )
                      ]
                      spids: [1012]
                    )
                  ]
                  spids: [981 982 1020 -1]
                )
                (case_arm
                  pat_list: [{(Lambda)}]
                  action: [
                    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (call_lambda)} 
                      {(DQ (${ VSub_Name envToken))} {(DQ (${ VSub_Name headItem))} {(DQ (${ VSub_Name rest))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RESULT)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [1051]
                        )
                      ]
                      spids: [1051]
                    )
                  ]
                  spids: [1023 1024 1059 -1]
                )
                (case_arm
                  pat_list: [{(Macro)}]
                  action: [
                    (C {(stderr)} 
                      {
                        (DQ 
                          (
'evaluator::eval_list / evaluator::eval_list <macro> not implemented yet'
                          )
                        )
                      }
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [1062 1063 1078 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(stderr)} 
                      {
                        (DQ ('evaluator::eval_list / type [') (${ VSub_Name headType) ('] not valid'))
                      }
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [1081 1082 1101 -1]
                )
              ]
              spids: [889 897 1104]
            )
          ]
          spids: [612]
        )
      spids: [603 611]
    )
    (FuncDef
      name: 'evaluator::call_builtinFunction'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name EVALUATOR_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (C {(stderr)} 
                          {
                            (DQ ('evaluator::call_builtinFunction(') 
                              (BracedVarSub
                                token: <VSub_At '@'>
                                prefix_op: VSub_Pound
                                spids: [1143 1146]
                              ) (') ') (${ VSub_At '@')
                            )
                          }
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 1137]
                )
              ]
              spids: [-1 1155]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1161]
                )
              ]
              spids: [1159]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:functionToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [1171]
                )
              ]
              spids: [1169]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:argsToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 3))}
                  spids: [1181]
                )
              ]
              spids: [1179]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} 
                  {(DQ (${ VSub_Name functionToken))}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:functionName)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1205]
                )
              ]
              spids: [1203]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(functionExists)} {($ VSub_Name '$functionName')})]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(stderr)} 
                      {
                        (DQ ('The builtin function [') (${ VSub_Name functionName) ('] does not exist'))
                      }
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 1222]
                )
              ]
              spids: [-1 1241]
            )
            (C {(eval)} {(DQ (${ VSub_Name functionName))} {(DQ (${ VSub_Name env))} 
              {(DQ (${ VSub_Name functionName))} {(DQ (${ VSub_Name argsToken))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {($ VSub_Name '$RESULT')}
                  spids: [1271]
                )
              ]
              spids: [1271]
            )
          ]
          spids: [1119]
        )
      spids: [1110 1118]
    )
    (FuncDef
      name: 'evaluator::call_lambda'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name EVALUATOR_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('evaluator::call_lambda ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 1304]
                )
              ]
              spids: [-1 1317]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1323]
                )
              ]
              spids: [1321]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:lambdaToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [1333]
                )
              ]
              spids: [1331]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:argsToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 3))}
                  spids: [1343]
                )
              ]
              spids: [1341]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                    (Lit_Other ':') (new)
                  }
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:passedArgs)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1364]
                )
              ]
              spids: [1362]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (Pipeline
                      children: [
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (isEmpty_c)
                          } {(DQ (${ VSub_Name argsToken))}
                        )
                      ]
                      negated: True
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (C 
                      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                        (Lit_Other ':') (first)
                      } {(DQ (${ VSub_Name argsToken))}
                    )
                    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
                      {(DQ (${ VSub_Name RESULT))}
                    )
                    (C 
                      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                        (Lit_Other ':') (append)
                      } {($ VSub_Name '$passedArgs')} {(DQ (${ VSub_Name RESULT))}
                    )
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (rest)
                          } {(DQ (${ VSub_Name argsToken))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:argsToken)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [1460]
                        )
                      ]
                      spids: [1460]
                    )
                  ]
                  spids: [1392 1468]
                )
            )
            (C 
              {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') (call)} {($ VSub_Name '$lambdaToken')} {($ VSub_Name '$passedArgs')}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1485]
                )
              ]
              spids: [1485]
            )
          ]
          spids: [1286]
        )
      spids: [1277 1285]
    )
    (FuncDef
      name: 'evaluator::call_builtinMacro'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name EVALUATOR_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('evaluator::call_builtinMacro ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 1522]
                )
              ]
              spids: [-1 1535]
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (set)} {(${ VSub_Name EVALUATOR_VARIABLE)} 
              {(nil)} {(nil)}
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1556]
                )
              ]
              spids: [1554]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:identifier)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [1566]
                )
              ]
              spids: [1564]
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:values)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(${ VSub_Number 3)}])}
                  spids: [1578]
                )
              ]
              spids: [1574]
            )
            (Case
              to_match: {(DQ (${ VSub_Name identifier))}
              arms: [
                (case_arm
                  pat_list: [{(DQ (if))}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(${ VSub_Name EVALUATOR_DEBUG)}
                                      right: {(1)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Sentence
                              child: (C {(stderr)} {(DQ ("evaluator::call_identifier in 'if'"))})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [-1 1619]
                        )
                      ]
                      spids: [-1 1629]
                    )
                    (C {(stderr)} {(DQ ('[if] not implemented yet'))})
                  ]
                  spids: [1599 1601 1639 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(stderr)} 
                      {
                        (DQ ('evaluator::call_identifier / Not implemented [') 
                          (${ VSub_Name identifier) (']')
                        )
                      }
                    )
                  ]
                  spids: [1642 1643 1657 -1]
                )
              ]
              spids: [1587 1595 1660]
            )
          ]
          spids: [1504]
        )
      spids: [1495 1503]
    )
    (FuncDef
      name: 'evaluator::call_specialForm'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name EVALUATOR_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (C {(stderr)} 
                          {
                            (DQ ('evaluator::call_specialForm(') 
                              (BracedVarSub
                                token: <VSub_At '@'>
                                prefix_op: VSub_Pound
                                spids: [1698 1701]
                              ) (') ') (${ VSub_At '@')
                            )
                          }
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [-1 1692]
                )
              ]
              spids: [-1 1710]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1716]
                )
              ]
              spids: [1714]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:functionToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [1726]
                )
              ]
              spids: [1724]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:argsToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 3))}
                  spids: [1736]
                )
              ]
              spids: [1734]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} 
                  {(DQ (${ VSub_Name functionToken))}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:functionName)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1760]
                )
              ]
              spids: [1758]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(functionExists)} {($ VSub_Name '$functionName')})]
                          negated: True
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(stderr)} 
                      {
                        (DQ ('The builtin function [') (${ VSub_Name functionName) ('] does not exist'))
                      }
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 1777]
                )
              ]
              spids: [-1 1796]
            )
            (C {(eval)} {(DQ (${ VSub_Name functionName))} {(DQ (${ VSub_Name env))} 
              {(DQ (${ VSub_Name functionName))} {(DQ (${ VSub_Name argsToken))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1826]
                )
              ]
              spids: [1826]
            )
          ]
          spids: [1674]
        )
      spids: [1665 1673]
    )
    (FuncDef
      name: 'evaluator::setup_builtin'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1851]
                )
              ]
              spids: [1849]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:type)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [1861]
                )
              ]
              spids: [1859]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:identifier)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 3))}
                  spids: [1871]
                )
              ]
              spids: [1869]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:functionName)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 4))}
                  spids: [1881]
                )
              ]
              spids: [1879]
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(DQ (${ VSub_Name type))} 
              {(DQ (${ VSub_Name functionName))}
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:t1)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1910]
                )
              ]
              spids: [1908]
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} 
              {(DQ (${ VSub_Name identifier))}
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:t2)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [1935]
                )
              ]
              spids: [1933]
            )
            (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {(DQ (${ VSub_Name env))} 
              {(DQ (${ VSub_Name t2))} {(DQ (${ VSub_Name t1))}
            )
          ]
          spids: [1846]
        )
      spids: [1837 1845]
    )
    (FuncDef
      name: 'evaluator::setup_builtins'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1984]
                )
              ]
              spids: [1982]
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ ('+'))} {(DQ ('evaluator::functions::builtin::add'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ (-))} {(DQ ('evaluator::functions::builtin::subtract'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ ('*'))} {(DQ ('evaluator::functions::builtin::multiply'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ (/))} {(DQ ('evaluator::functions::builtin::divide'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ ('='))} {(DQ ('evaluator::functions::builtin::equals'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ ('<'))} {(DQ ('evaluator::functions::builtin::lessthan'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ ('>'))} {(DQ ('evaluator::functions::builtin::greaterthan'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ ('<='))} {(DQ ('evaluator::functions::builtin::lessthanorequal'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(BuiltinFunction)} {(DQ ('>='))} {(DQ ('evaluator::functions::builtin::greaterthanorequal'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(SpecialForm)} {(DQ (if))} {(DQ ('evaluator::specialforms::if'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(SpecialForm)} {(DQ (lambda))} {(DQ ('evaluator::specialforms::lambda'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(SpecialForm)} {(DQ (let))} {(DQ ('evaluator::specialforms::let'))}
            )
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtin)} {(DQ (${ VSub_Name env))} 
              {(SpecialForm)} {(SQ <'let*'>)} {(DQ ('evaluator::specialforms::letstar'))}
            )
            (C {(environment) (Lit_Other ':') (Lit_Other ':') (pushScope)} {(DQ (${ VSub_Name env))})
          ]
          spids: [1979]
        )
      spids: [1970 1978]
    )
    (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 2315]
        )
      ]
      spids: [-1 2320]
    )
    (FuncDef
      name: createTestEnv
      body: 
        (BraceGroup
          children: [
            (C {(environment) (Lit_Other ':') (Lit_Other ':') (new)})
            (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (setup_builtins)} 
              {(DQ (${ VSub_Name RESULT))}
            )
          ]
          spids: [2329]
        )
      spids: [2323 2328]
    )
    (FuncDef
      name: setInEnv
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [2362]
                )
              ]
              spids: [2360]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [2372]
                )
              ]
              spids: [2370]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:type)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 3))}
                  spids: [2382]
                )
              ]
              spids: [2380]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:value)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 4))}
                  spids: [2392]
                )
              ]
              spids: [2390]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(Identifier)} 
                  {(DQ (${ VSub_Name name))}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:nameToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [2417]
                )
              ]
              spids: [2415]
            )
            (Sentence
              child: 
                (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(DQ (${ VSub_Name type))} 
                  {(DQ (${ VSub_Name value))}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:valueToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [2446]
                )
              ]
              spids: [2444]
            )
            (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {(DQ (${ VSub_Name env))} 
              {(DQ (${ VSub_Name nameToken))} {(DQ (${ VSub_Name valueToken))}
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(Identifier)} 
              {(DQ (${ VSub_Name name))}
            )
          ]
          spids: [2357]
        )
      spids: [2351 2356]
    )
    (FuncDef
      name: appendToList
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:listToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [2505]
                )
              ]
              spids: [2503]
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-a'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:items)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_At '@'>
                                suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 2)}))
                                spids: [2520 2524]
                              )
                            )
                          }
                        ]
                      )
                    }
                  spids: [2517]
                )
              ]
              spids: [2513]
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-i'"]
              pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[2533])]
              spids: [2529]
            )
            (Assignment
              keyword: Assign_Declare
              flags: ["'-i'"]
              pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[2540])]
              spids: [2536]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentType) op:Equal spids:[2545])]
              spids: [2543]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:currentValue) op:Equal spids:[2550])]
              spids: [2548]
            )
            (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: [2559 2565]
                              )
                            }
                        )
                    )
                  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)})
                        )
                    )
                )
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_NEqual
                              left: 
                                (ArithBinary
                                  op_id: Arith_Percent
                                  left: (ArithVarRef name:size)
                                  right: (ArithWord w:{(Lit_Digits 2)})
                                )
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(stderr)} {(DQ ('appendToList: number of items to add to list not even'))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 2594]
                )
              ]
              spids: [-1 2609]
            )
            (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: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentType)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name items>
                                  bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)}))
                                  spids: [2639 2646]
                                )
                              )
                            }
                          spids: [2637]
                        )
                      ]
                      spids: [2637]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentValue)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (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: [2652 2663]
                                )
                              )
                            }
                          spids: [2650]
                        )
                      ]
                      spids: [2650]
                    )
                    (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} 
                      {(DQ (${ VSub_Name currentType))} {(DQ (${ VSub_Name currentValue))}
                    )
                    (C 
                      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                        (Lit_Other ':') (append)
                      } {(DQ (${ VSub_Name listToken))} {(DQ (${ VSub_Name RESULT))}
                    )
                  ]
                  spids: [2634 2706]
                )
            )
          ]
          spids: [2500]
        )
      spids: [2494 2499]
    )
    (Assignment
      keyword: Assign_Declare
      pairs: [(assign_pair lhs:(LhsName name:env) op:Equal spids:[2714])]
      spids: [2712]
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [2724]
        )
      ]
      spids: [2724]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(Boolean)} {(true)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:valueToken)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [2742]
        )
      ]
      spids: [2742]
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {($ VSub_Name '$valueToken')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Boolean :: true'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ (atom/boolean))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [2810]
        )
      ]
      spids: [2810]
    )
    (Sentence
      child: (C {(setInEnv)} {(DQ (${ VSub_Name env))} {(v)} {(Integer)} {(4)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:token)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [2833]
        )
      ]
      spids: [2833]
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name token))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 4'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('identifier evaluation'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [2901]
        )
      ]
      spids: [2901]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [2918]
        )
      ]
      spids: [2918]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'+'>)} {(Integer)} {(5)} {(Integer)} 
      {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {($ VSub_Name '$vCode')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 7'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(+ 5 2)'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [2998]
        )
      ]
      spids: [2998]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3015]
        )
      ]
      spids: [3015]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <->)} {(Integer)} {(5)} {(Integer)} 
      {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {($ VSub_Name '$vCode')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 3'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(- 5 2)'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3095]
        )
      ]
      spids: [3095]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3112]
        )
      ]
      spids: [3112]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'*'>)} {(Integer)} {(5)} {(Integer)} 
      {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {($ VSub_Name '$vCode')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 10'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(* 5 2)'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3192]
        )
      ]
      spids: [3192]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3209]
        )
      ]
      spids: [3209]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ </>)} {(Integer)} {(6)} {(Integer)} 
      {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {($ VSub_Name '$vCode')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 3'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(/ 6 2)'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3289]
        )
      ]
      spids: [3289]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3306]
        )
      ]
      spids: [3306]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'='>)} {(Integer)} {(2)} {(Integer)} 
      {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {($ VSub_Name '$vCode')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Boolean :: true'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(= 2 2)'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3386]
        )
      ]
      spids: [3386]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3403]
        )
      ]
      spids: [3403]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'='>)} {(Integer)} {(2)} {(Integer)} 
      {(3)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {($ VSub_Name '$vCode')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Boolean :: false'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(= 2 3)'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3489]
        )
      ]
      spids: [3489]
    )
    (Sentence
      child: (C {(setInEnv)} {(DQ (${ VSub_Name env))} {(u)} {(Integer)} {(4)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:token)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3512]
        )
      ]
      spids: [3512]
    )
    (Sentence
      child: (C {(setInEnv)} {(DQ (${ VSub_Name env))} {(v)} {(Integer)} {(4)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:token)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3535]
        )
      ]
      spids: [3535]
    )
    (Sentence
      child: (C {(setInEnv)} {(DQ (${ VSub_Name env))} {(w)} {(Integer)} {(2)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:token)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [3558]
        )
      ]
      spids: [3558]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [3578]
        )
      ]
      spids: [3578]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'+'>)} {(Identifier)} {(SQ <v>)} 
      {(Integer)} {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 6'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(+ <v=4> 2)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [3667]
        )
      ]
      spids: [3667]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'+'>)} {(Integer)} {(2)} 
      {(Identifier)} {(SQ <v>)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 6'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(+ 2 <v=4>)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [3756]
        )
      ]
      spids: [3756]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <->)} {(Identifier)} {(SQ <v>)} 
      {(Integer)} {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 2'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(- <v=4> 2)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [3845]
        )
      ]
      spids: [3845]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <->)} {(Integer)} {(2)} {(Identifier)} 
      {(SQ <v>)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: -2'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(- 2 <v=4>)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [3934]
        )
      ]
      spids: [3934]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'*'>)} {(Identifier)} {(SQ <v>)} 
      {(Integer)} {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 8'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(* <v=4> 2)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4023]
        )
      ]
      spids: [4023]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'*'>)} {(Integer)} {(2)} 
      {(Identifier)} {(SQ <v>)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 8'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(* 2 <v=4>)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4112]
        )
      ]
      spids: [4112]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ </>)} {(Identifier)} {(SQ <v>)} 
      {(Integer)} {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 2'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(/ <v=4> 2)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4201]
        )
      ]
      spids: [4201]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ </>)} {(Integer)} {(12)} {(Identifier)} 
      {(SQ <v>)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 3'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(/ 12 <v=4>)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4290]
        )
      ]
      spids: [4290]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'='>)} {(Identifier)} {(SQ <v>)} 
      {(Integer)} {(2)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Boolean :: false'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(= <v=4> 2)'))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4379]
        )
      ]
      spids: [4379]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'='>)} {(Integer)} {(4)} 
      {(Identifier)} {(SQ <v>)}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Boolean :: true'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(= 4 <v=4>)'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:env)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4469]
        )
      ]
      spids: [4469]
    )
    (Sentence
      child: (C {(setInEnv)} {(DQ (${ VSub_Name env))} {(u)} {(Integer)} {(4)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:token)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4492]
        )
      ]
      spids: [4492]
    )
    (Sentence
      child: (C {(setInEnv)} {(DQ (${ VSub_Name env))} {(v)} {(Integer)} {(4)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:token)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4515]
        )
      ]
      spids: [4515]
    )
    (Sentence
      child: (C {(setInEnv)} {(DQ (${ VSub_Name env))} {(w)} {(Integer)} {(2)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:token)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4538]
        )
      ]
      spids: [4538]
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:slistOne)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4555]
        )
      ]
      spids: [4555]
    )
    (C {(appendToList)} {($ VSub_Name '$slistOne')} {(Identifier)} {(Lit_Other '+')} {(Integer)} {(4)} 
      {(Identifier)} {(v)}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:slistTwo)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4585]
        )
      ]
      spids: [4585]
    )
    (C {(appendToList)} {($ VSub_Name '$slistTwo')} {(Identifier)} {(-)} {(Integer)} {(4)} {(Identifier)} 
      {(w)}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4615]
        )
      ]
      spids: [4615]
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(SQ <'*'>)})
    (C 
      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (append)} {($ VSub_Name '$vCode')} {($ VSub_Name '$slistTwo')}
    )
    (C 
      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (append)} {($ VSub_Name '$vCode')} {($ VSub_Name '$slistOne')}
    )
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 16'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('(* (+ 4 <v=4>) (- 4 <w=2>))'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaEnv)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4719]
        )
      ]
      spids: [4719]
    )
    (C {(setInEnv)} {($ VSub_Name '$lambdaEnv')} {(DQ (y))} {(Integer)} {(10)})
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaArgs)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4748]
        )
      ]
      spids: [4748]
    )
    (C {(appendToList)} {($ VSub_Name '$lambdaArgs')} {(Identifier)} {(DQ (x))})
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaExpression)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4775]
        )
      ]
      spids: [4775]
    )
    (C {(appendToList)} {($ VSub_Name '$lambdaExpression')} {(Identifier)} {(SQ <'*'>)} {(Identifier)} 
      {(DQ (x))} {(Identifier)} {(DQ (y))}
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4814]
        )
      ]
      spids: [4814]
    )
    (C 
      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (append)} {($ VSub_Name '$lambdaCode')} {($ VSub_Name '$lambdaExpression')}
    )
    (Sentence
      child: 
        (C {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') (new)} 
          {
            (DQ ($ VSub_Name '$lambdaEnv') (' ') ($ VSub_Name '$lambdaArgs') (' ') 
              ($ VSub_Name '$lambdaCode')
            )
          }
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambda)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [4851]
        )
      ]
      spids: [4851]
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:env) op:Equal rhs:{(${ VSub_Name RESULT)} spids:[4863])]
      spids: [4863]
    )
    (C {(setInEnv)} {(DQ (${ VSub_Name env))} {(DQ (a))} {(Integer)} {(5)})
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(LinkedList)})
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:vCode)
          op: Equal
          rhs: {(${ VSub_Name RESULT)}
          spids: [4894]
        )
      ]
      spids: [4894]
    )
    (C 
      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (append)} {($ VSub_Name '$vCode')} {($ VSub_Name '$lambda')}
    )
    (C {(appendToList)} {($ VSub_Name '$vCode')} {(Identifier)} {(DQ (a))})
    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} {(DQ (${ VSub_Name env))} 
      {(DQ (${ VSub_Name vCode))}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 50'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('env(a=5) ((lambda[env(y=10)] (x) (* y x)) a)'))}
    )
    (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: [4991 4995]
                        )
                      } {(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 5017]
        )
      ]
      spids: [-1 5026]
    )
  ]
)