(command.CommandList
  children: [
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} 
          {
            (braced_var_sub
              token: <Id.VSub_Name EVALUATOR_SH>
              suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<true>})
            )
          } {<Id.Lit_RBracket ']'>}
        )
        (command.ControlFlow token:<Id.ControlFlow_Return return>)
      ]
    )
    (C {<declare>} {<-g>} {<Id.Lit_VarLike 'EVALUATOR_SH='> <true>})
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VOp1_Percent '%'>
              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
            )
        ) <'/common.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VOp1_Percent '%'>
              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
            )
        ) <'/variables.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VOp1_Percent '%'>
              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
            )
        ) <'/callable.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VOp1_Percent '%'>
              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
            )
        ) <'/specialforms.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VOp1_Percent '%'>
              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
            )
        ) <'/specialforms.lambda.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VOp1_Percent '%'>
              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
            )
        ) <'/environment.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: 
            (suffix_op.Unary
              tok: <Id.VOp1_Percent '%'>
              arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>}
            )
        ) <'/evaluator.functions.builtin.sh'>
      }
    )
    (C {<declare>} {<-g>} {<Id.Lit_VarLike 'EVALUATOR_DEBUG='> <0>})
    (command.ShFunction
      name: 'evaluator::eval'
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name EVALUATOR_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'evaluator::eval '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [142 157]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'envToken='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'exprToken='> (DQ (${ Id.VSub_Number 2))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C 
                              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> 
                                <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf>
                              } {(DQ (${ Id.VSub_Name exprToken))} {<Atom>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <clone>} 
                      {(DQ (${ Id.VSub_Name exprToken))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [229]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [195 214]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C 
                              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> 
                                <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf>
                              } {(DQ (${ Id.VSub_Name exprToken))} {<Callable>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <clone>} 
                      {(DQ (${ Id.VSub_Name exprToken))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [274]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [240 259]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C 
                              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> 
                                <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf>
                              } {(DQ (${ Id.VSub_Name exprToken))} {<Identifier>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <getValue>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name exprToken))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [325]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [285 304]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C 
                              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> 
                                <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf>
                              } {(DQ (${ Id.VSub_Name exprToken))} {<LinkedList>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval_list>} 
                      {(DQ (${ Id.VSub_At '@'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [370]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [336 355]
                )
              ]
              else_action: [
                (C {<stderr>} 
                  {
                    (DQ <'evaluator::eval / Unhandled type for token ['> 
                      ($ Id.VSub_DollarName '$exprToken') <']'>
                    )
                  }
                )
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <printMetadata>})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
            (C {<stderr>} {(DQ <'should never get here'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::evalFromLinkedList'
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name EVALUATOR_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'evaluator::eval '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [434 449]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'envToken='> (DQ (${ Id.VSub_Number 1))})
            (command.Sentence
              child: (C {<declare>} {<Id.Lit_VarLike 'expressions='> (DQ (${ Id.VSub_Number 2))})
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<currentSexp>} {<currentResult>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C 
                              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                                <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c>
                              } {(DQ (${ Id.VSub_Name expressions))}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first>
                          } {(DQ (${ Id.VSub_Name expressions))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentSexp)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name RESULT)}
                          spids: [541]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name expressions))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:expressions)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name RESULT)}
                          spids: [563]
                        )
                      ]
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {($ Id.VSub_DollarName '$envToken')} {($ Id.VSub_DollarName '$currentSexp')}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentResult)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name RESULT)}
                          spids: [579]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name currentResult))}
                  spids: [588]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::eval_list'
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name EVALUATOR_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'evaluator::eval_list '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [615 630]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'envToken='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'listToken='> (DQ (${ Id.VSub_Number 2))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C 
                                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> 
                                    <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <instanceOf>
                                  } {($ Id.VSub_DollarName '$listToken')} {<LinkedList>}
                                )
                              ]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'evaluator::eval_list / must be a list'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [668 685]
                )
              ]
            )
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name listToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: {(DQ (${ Id.VSub_Name RESULT))}
                                  right: {<0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Nil>} {(DQ )})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [751]
                        )
                      ]
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [719 736]
                )
              ]
            )
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <first>
              } {(DQ (${ Id.VSub_Name listToken))}
            )
            (command.Sentence
              child: 
                (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                  {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headItem='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                  {(DQ (${ Id.VSub_Name headItem))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headType='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name headItem))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headValue='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <rest>
                  } {($ Id.VSub_DollarName '$listToken')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name headType))}
              arms: [
                (case_arm
                  pat_list: [{<BuiltinFunction>}]
                  action: [
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <call_builtinFunction>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name headItem))} {(DQ (${ Id.VSub_Name rest))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [928]
                        )
                      ]
                    )
                  ]
                  spids: [900 901 936 -1]
                )
                (case_arm
                  pat_list: [{<BuiltinMacro>}]
                  action: [
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <call_builtinMacro>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name headItem))} {(DQ (${ Id.VSub_Name rest))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [970]
                        )
                      ]
                    )
                  ]
                  spids: [939 940 978 -1]
                )
                (case_arm
                  pat_list: [{<SpecialForm>}]
                  action: [
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <call_specialForm>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name headItem))} {(DQ (${ Id.VSub_Name rest))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [1012]
                        )
                      ]
                    )
                  ]
                  spids: [981 982 1020 -1]
                )
                (case_arm
                  pat_list: [{<Lambda>}]
                  action: [
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <call_lambda>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name headItem))} {(DQ (${ Id.VSub_Name rest))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          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'
                          >
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1062 1063 1078 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<stderr>} 
                      {
                        (DQ <'evaluator::eval_list / type ['> (${ Id.VSub_Name headType) 
                          <'] not valid'>
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1081 1082 1101 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::call_builtinFunction'
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name EVALUATOR_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (C {<stderr>} 
                          {
                            (DQ <'evaluator::call_builtinFunction('> 
                              (braced_var_sub
                                token: <Id.VSub_At '@'>
                                prefix_op: (Id.VSub_Pound)
                              ) <') '> (${ Id.VSub_At '@')
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1122 1137]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionToken='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name functionToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Name RESULT))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<functionExists>} {($ Id.VSub_DollarName '$functionName')})
                              ]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} 
                      {
                        (DQ <'The builtin function ['> (${ Id.VSub_Name functionName) 
                          <'] does not exist'>
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1213 1222]
                )
              ]
            )
            (C {<eval>} {(DQ (${ Id.VSub_Name functionName))} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name functionName))} {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$RESULT')}
                  spids: [1271]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::call_lambda'
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name EVALUATOR_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'evaluator::call_lambda '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1289 1304]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <new>
                  }
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'passedArgs='> (DQ (${ Id.VSub_Name RESULT))})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C 
                              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                                <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <isEmpty_c>
                              } {(DQ (${ Id.VSub_Name argsToken))}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C 
                      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                        <Id.Lit_Colon ':'> <first>
                      } {(DQ (${ Id.VSub_Name argsToken))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (C 
                      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                        <Id.Lit_Colon ':'> <append>
                      } {($ Id.VSub_DollarName '$passedArgs')} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name argsToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:argsToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [1460]
                        )
                      ]
                    )
                  ]
                )
            )
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <call>
              } {($ Id.VSub_DollarName '$lambdaToken')} {($ Id.VSub_DollarName '$passedArgs')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [1485]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::call_builtinMacro'
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name EVALUATOR_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'evaluator::call_builtinMacro '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1507 1522]
                )
              ]
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <set>} 
              {(${ Id.VSub_Name EVALUATOR_VARIABLE)} {<nil>} {<nil>}
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'identifier='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<-a>} 
              {<Id.Lit_VarLike 'values='> 
                (sh_array_literal
                  left: <Id.Op_LParen _>
                  words: [{(${ Id.VSub_Number 3)}]
                )
              }
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name identifier))}
              arms: [
                (case_arm
                  pat_list: [{(DQ <if>)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(${ Id.VSub_Name EVALUATOR_DEBUG)}
                                          right: {<1>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (C {<stderr>} {(DQ <'evaluator::call_identifier in \'if\''>)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [1604 1619]
                        )
                      ]
                    )
                    (C {<stderr>} {(DQ <'[if] not implemented yet'>)})
                  ]
                  spids: [1598 1601 1639 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<stderr>} 
                      {
                        (DQ <'evaluator::call_identifier / Not implemented ['> 
                          (${ Id.VSub_Name identifier) <']'>
                        )
                      }
                    )
                  ]
                  spids: [1642 1643 1657 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::call_specialForm'
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name EVALUATOR_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (C {<stderr>} 
                          {
                            (DQ <'evaluator::call_specialForm('> 
                              (braced_var_sub
                                token: <Id.VSub_At '@'>
                                prefix_op: (Id.VSub_Pound)
                              ) <') '> (${ Id.VSub_At '@')
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1677 1692]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionToken='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name functionToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Name RESULT))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<functionExists>} {($ Id.VSub_DollarName '$functionName')})
                              ]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} 
                      {
                        (DQ <'The builtin function ['> (${ Id.VSub_Name functionName) 
                          <'] does not exist'>
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1768 1777]
                )
              ]
            )
            (C {<eval>} {(DQ (${ Id.VSub_Name functionName))} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name functionName))} {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [1826]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::setup_builtin'
      body: 
        (BraceGroup
          children: [
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'type='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'identifier='> (DQ (${ Id.VSub_Number 3))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 4))})
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {(DQ (${ Id.VSub_Name type))} 
              {(DQ (${ Id.VSub_Name functionName))}
            )
            (C {<declare>} {<Id.Lit_VarLike 't1='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<String>} 
              {(DQ (${ Id.VSub_Name identifier))}
            )
            (C {<declare>} {<Id.Lit_VarLike 't2='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setVariable>} 
              {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name t2))} {(DQ (${ Id.VSub_Name t1))}
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::setup_builtins'
      body: 
        (BraceGroup
          children: [
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <'+'>)} {(DQ <'evaluator::functions::builtin::add'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <->)} {(DQ <'evaluator::functions::builtin::subtract'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <'*'>)} {(DQ <'evaluator::functions::builtin::multiply'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <'/'>)} {(DQ <'evaluator::functions::builtin::divide'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <'='>)} {(DQ <'evaluator::functions::builtin::equals'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <'<'>)} {(DQ <'evaluator::functions::builtin::lessthan'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <'>'>)} {(DQ <'evaluator::functions::builtin::greaterthan'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <'<='>)} {(DQ <'evaluator::functions::builtin::lessthanorequal'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<BuiltinFunction>} {(DQ <'>='>)} {(DQ <'evaluator::functions::builtin::greaterthanorequal'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<SpecialForm>} {(DQ <if>)} {(DQ <'evaluator::specialforms::if'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<SpecialForm>} {(DQ <lambda>)} {(DQ <'evaluator::specialforms::lambda'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<SpecialForm>} {(DQ <let>)} {(DQ <'evaluator::specialforms::let'>)}
            )
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtin>} 
              {(DQ (${ Id.VSub_Name env))} {<SpecialForm>} {(SQ <'let*'>)} {(DQ <'evaluator::specialforms::letstar'>)}
            )
            (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <pushScope>} 
              {(DQ (${ Id.VSub_Name env))}
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$0')} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$BASH_SOURCE')} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)]
          spids: [2301 2315]
        )
      ]
    )
    (command.ShFunction
      name: createTestEnv
      body: 
        (BraceGroup
          children: [
            (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setup_builtins>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          ]
        )
    )
    (command.ShFunction
      name: setInEnv
      body: 
        (BraceGroup
          children: [
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'name='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'type='> (DQ (${ Id.VSub_Number 3))})
            (C {<declare>} {<Id.Lit_VarLike 'value='> (DQ (${ Id.VSub_Number 4))})
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Identifier>} 
                  {(DQ (${ Id.VSub_Name name))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'nameToken='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} 
                  {(DQ (${ Id.VSub_Name type))} {(DQ (${ Id.VSub_Name value))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'valueToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setVariable>} 
              {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name nameToken))} {(DQ (${ Id.VSub_Name valueToken))}
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Identifier>} 
              {(DQ (${ Id.VSub_Name name))}
            )
          ]
        )
    )
    (command.ShFunction
      name: appendToList
      body: 
        (BraceGroup
          children: [
            (C {<declare>} {<Id.Lit_VarLike 'listToken='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<-a>} 
              {<Id.Lit_VarLike 'items='> 
                (sh_array_literal
                  left: <Id.Op_LParen _>
                  words: [
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_At '@'>
                          suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>})
                        )
                      )
                    }
                  ]
                )
              }
            )
            (C {<declare>} {<-i>} {<size>})
            (C {<declare>} {<-i>} {<max_index>})
            (C {<declare>} {<currentType>})
            (C {<declare>} {<currentValue>})
            (command.DParen
              child: 
                (arith_expr.Binary
                  op_id: Id.Arith_Comma
                  left: 
                    (arith_expr.BinaryAssign
                      op_id: Id.Arith_Equal
                      left: <Id.Lit_ArithVarLike size>
                      right: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name items>
                            prefix_op: (Id.VSub_Pound)
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        }
                    )
                  right: 
                    (arith_expr.BinaryAssign
                      op_id: Id.Arith_Equal
                      left: <Id.Lit_ArithVarLike max_index>
                      right: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Minus
                          left: <Id.Lit_ArithVarLike size>
                          right: {<Id.Lit_Digits 1>}
                        )
                    )
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_NEqual
                                  left: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Percent
                                      left: <Id.Lit_ArithVarLike size>
                                      right: {<Id.Lit_Digits 2>}
                                    )
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'appendToList: number of items to add to list not even'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [2578 2594]
                )
              ]
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_LessEqual
                  left: <Id.Lit_ArithVarLike i>
                  right: <Id.Lit_ArithVarLike max_index>
                )
              update: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Plus
                      left: <Id.Lit_ArithVarLike i>
                      right: {<Id.Lit_Digits 2>}
                    )
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentType)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name items>
                                  bracket_op: (bracket_op.ArrayIndex expr:{(${ Id.VSub_Name i)})
                                )
                              )
                            }
                          spids: [2637]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name items>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Plus
                                          left: <Id.Lit_ArithVarLike i>
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                )
                              )
                            }
                          spids: [2650]
                        )
                      ]
                    )
                    (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} 
                      {(DQ (${ Id.VSub_Name currentType))} {(DQ (${ Id.VSub_Name currentValue))}
                    )
                    (C 
                      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                        <Id.Lit_Colon ':'> <append>
                      } {(DQ (${ Id.VSub_Name listToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                  ]
                )
            )
          ]
        )
    )
    (C {<declare>} {<env>})
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [2724]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:valueToken)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [2742]
            )
          ]
        )
      ]
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {($ Id.VSub_DollarName '$valueToken')}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Boolean :: true'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'atom/boolean'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [2810]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<setInEnv>} {(DQ (${ Id.VSub_Name env))} {<v>} {<Integer>} {<4>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:token)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [2833]
            )
          ]
        )
      ]
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name token))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 4'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'identifier evaluation'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [2901]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [2918]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'+'>)} {<Integer>} {<5>} 
      {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {($ Id.VSub_DollarName '$vCode')}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 7'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(+ 5 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [2998]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3015]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <->)} {<Integer>} {<5>} 
      {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {($ Id.VSub_DollarName '$vCode')}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 3'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(- 5 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3095]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3112]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'*'>)} {<Integer>} {<5>} 
      {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {($ Id.VSub_DollarName '$vCode')}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 10'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(* 5 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3192]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3209]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'/'>)} {<Integer>} {<6>} 
      {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {($ Id.VSub_DollarName '$vCode')}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 3'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(/ 6 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3289]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3306]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'='>)} {<Integer>} {<2>} 
      {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {($ Id.VSub_DollarName '$vCode')}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Boolean :: true'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(= 2 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3386]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3403]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'='>)} {<Integer>} {<2>} 
      {<Integer>} {<3>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {($ Id.VSub_DollarName '$vCode')}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Boolean :: false'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(= 2 3)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3489]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<setInEnv>} {(DQ (${ Id.VSub_Name env))} {<u>} {<Integer>} {<4>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:token)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3512]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<setInEnv>} {(DQ (${ Id.VSub_Name env))} {<v>} {<Integer>} {<4>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:token)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3535]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<setInEnv>} {(DQ (${ Id.VSub_Name env))} {<w>} {<Integer>} {<2>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:token)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [3558]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [3578]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'+'>)} {<Identifier>} 
      {(SQ <v>)} {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 6'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(+ <v=4> 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [3667]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'+'>)} {<Integer>} {<2>} 
      {<Identifier>} {(SQ <v>)}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 6'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(+ 2 <v=4>)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [3756]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <->)} {<Identifier>} 
      {(SQ <v>)} {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 2'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(- <v=4> 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [3845]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <->)} {<Integer>} {<2>} 
      {<Identifier>} {(SQ <v>)}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: -2'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(- 2 <v=4>)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [3934]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'*'>)} {<Identifier>} 
      {(SQ <v>)} {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 8'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(* <v=4> 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4023]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'*'>)} {<Integer>} {<2>} 
      {<Identifier>} {(SQ <v>)}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 8'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(* 2 <v=4>)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4112]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'/'>)} {<Identifier>} 
      {(SQ <v>)} {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 2'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(/ <v=4> 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4201]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'/'>)} {<Integer>} {<12>} 
      {<Identifier>} {(SQ <v>)}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 3'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(/ 12 <v=4>)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4290]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'='>)} {<Identifier>} 
      {(SQ <v>)} {<Integer>} {<2>}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Boolean :: false'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(= <v=4> 2)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4379]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'='>)} {<Integer>} {<4>} 
      {<Identifier>} {(SQ <v>)}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Boolean :: true'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(= 4 <v=4>)'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4469]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<setInEnv>} {(DQ (${ Id.VSub_Name env))} {<u>} {<Integer>} {<4>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:token)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4492]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<setInEnv>} {(DQ (${ Id.VSub_Name env))} {<v>} {<Integer>} {<4>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:token)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4515]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<setInEnv>} {(DQ (${ Id.VSub_Name env))} {<w>} {<Integer>} {<2>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:token)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4538]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:slistOne)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4555]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$slistOne')} {<Identifier>} {<Id.Lit_Other '+'>} 
      {<Integer>} {<4>} {<Identifier>} {<v>}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:slistTwo)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4585]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$slistTwo')} {<Identifier>} {<->} {<Integer>} {<4>} 
      {<Identifier>} {<w>}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4615]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(SQ <'*'>)})
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
        <Id.Lit_Colon ':'> <append>
      } {($ Id.VSub_DollarName '$vCode')} {($ Id.VSub_DollarName '$slistTwo')}
    )
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
        <Id.Lit_Colon ':'> <append>
      } {($ Id.VSub_DollarName '$vCode')} {($ Id.VSub_DollarName '$slistOne')}
    )
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 16'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'(* (+ 4 <v=4>) (- 4 <w=2>))'>)}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:lambdaEnv)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4719]
            )
          ]
        )
      ]
    )
    (C {<setInEnv>} {($ Id.VSub_DollarName '$lambdaEnv')} {(DQ <y>)} {<Integer>} {<10>})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:lambdaArgs)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4748]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaArgs')} {<Identifier>} {(DQ <x>)})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:lambdaExpression)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4775]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaExpression')} {<Identifier>} {(SQ <'*'>)} 
      {<Identifier>} {(DQ <x>)} {<Identifier>} {(DQ <y>)}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:lambdaCode)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4814]
            )
          ]
        )
      ]
    )
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
        <Id.Lit_Colon ':'> <append>
      } {($ Id.VSub_DollarName '$lambdaCode')} {($ Id.VSub_DollarName '$lambdaExpression')}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <new>
              } 
              {
                (DQ ($ Id.VSub_DollarName '$lambdaEnv') <' '> ($ Id.VSub_DollarName '$lambdaArgs') <' '> 
                  ($ Id.VSub_DollarName '$lambdaCode')
                )
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:lambda)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [4851]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence child:(C {<createTestEnv>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:env)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4863]
            )
          ]
        )
      ]
    )
    (C {<setInEnv>} {(DQ (${ Id.VSub_Name env))} {(DQ <a>)} {<Integer>} {<5>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<LinkedList>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:vCode)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name RESULT)}
              spids: [4894]
            )
          ]
        )
      ]
    )
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
        <Id.Lit_Colon ':'> <append>
      } {($ Id.VSub_DollarName '$vCode')} {($ Id.VSub_DollarName '$lambda')}
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$vCode')} {<Identifier>} {(DQ <a>)})
    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
      {(DQ (${ Id.VSub_Name vCode))}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <equals>} {(DQ <'Integer :: 50'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'env(a=5) ((lambda[env(y=10)] (x) (* y x)) a)'>)}
        )
      ]
    )
    (C {<assert> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <report>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Number 1>
                              suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<isset>})
                            )
                          } {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} 
                          {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <debug>)} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <printMetadata>})]
          spids: [4987 5017]
        )
      ]
    )
  ]
)