(CommandList
  children: [
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} 
          {
            (BracedVarSub
              token: <VSub_Name CALLABLE_LAMBDA_SH>
              suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(true)})
              spids: [9 13]
            )
          } {(Lit_Other ']')}
        )
        (ControlFlow token:<ControlFlow_Return return>)
      ]
    )
    (Assignment
      keyword: Assign_Declare
      flags: [-g]
      pairs: [(assign_pair lhs:(LhsName name:CALLABLE_LAMBDA_SH) op:Equal rhs:{(true)} spids:[25])]
      spids: [21]
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [31 36]
        ) (/common.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [41 46]
        ) (/variables.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [51 56]
        ) (/variables.linkedlist.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [61 66]
        ) (/specialforms.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [71 76]
        ) (/evaluator.sh)
      }
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [81 86]
        ) (/callable.sh)
      }
    )
    (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (define)} 
      {(Lambda)} {(Function)}
    )
    (FuncDef
      name: 'variable::Lambda::new'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('variable::Lambda::new ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 185]
                )
              ]
              spids: [16777215 198]
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(Lambda)} {(DQ (${ VSub_At '@'))})
          ]
          spids: [167]
        )
      spids: [155 166]
    )
    (FuncDef
      name: 'variable::Lambda::call'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('variable::Lambda::call ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 262]
                )
              ]
              spids: [16777215 275]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:lambdaToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [280]
                )
              ]
              spids: [278]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:passedArgs)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 2))}
                  spids: [290]
                )
              ]
              spids: [288]
            )
            (C 
              {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name lambdaToken))} {(Lambda)}
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                    (Lit_Other ':') (length)
                  } {($ VSub_Name '$passedArgs')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:passedArgCount)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [330]
                )
              ]
              spids: [328]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') 
                    (getEnv)
                  } {($ VSub_Name '$lambdaToken')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [352]
                )
              ]
              spids: [350]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') 
                    (getFormalArgs)
                  } {($ VSub_Name '$lambdaToken')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:formalArgs)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [374]
                )
              ]
              spids: [372]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') 
                    (getBody)
                  } {($ VSub_Name '$lambdaToken')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:body)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [396]
                )
              ]
              spids: [394]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                    (Lit_Other ':') (length)
                  } {($ VSub_Name '$formalArgs')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:formalArgCount)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [418]
                )
              ]
              spids: [416]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_ne
                              left: {($ VSub_Name '$passedArgCount')}
                              right: {($ VSub_Name '$formalArgCount')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(stderr)} 
                      {
                        (DQ ('lambda: passed arg count (') (${ VSub_Name passedArgCount) 
                          (') != format arg count (') (${ VSub_Name formalArgCount) (')')
                        )
                      }
                    )
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 440]
                )
              ]
              spids: [16777215 463]
            )
            (Sentence
              child: 
                (C {(environment) (Lit_Other ':') (Lit_Other ':') (pushScope)} {($ VSub_Name '$env')})
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:runningEnv)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESULT))}
                  spids: [478]
                )
              ]
              spids: [476]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:thisKeyToken) op:Equal spids:[488])]
              spids: [486]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [(assign_pair lhs:(LhsName name:thisValueToken) op:Equal spids:[493])]
              spids: [491]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (Pipeline
                      children: [
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (isEmpty_c)
                          } {(DQ (${ VSub_Name formalArgs))}
                        )
                      ]
                      negated: T
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (first)
                          } {(DQ (${ VSub_Name formalArgs))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:thisKeyToken)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [535]
                        )
                      ]
                      spids: [535]
                    )
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (first)
                          } {(DQ (${ VSub_Name passedArgs))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:thisValueToken)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [559]
                        )
                      ]
                      spids: [559]
                    )
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (rest)
                          } {(DQ (${ VSub_Name formalArgs))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:formalArgs)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [584]
                        )
                      ]
                      spids: [584]
                    )
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (rest)
                          } {(DQ (${ VSub_Name passedArgs))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:passedArgs)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name RESULT))}
                          spids: [608]
                        )
                      ]
                      spids: [608]
                    )
                    (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} 
                      {(DQ (${ VSub_Name runningEnv))} {($ VSub_Name '$thisKeyToken')} {($ VSub_Name '$thisValueToken')}
                    )
                  ]
                  spids: [516 633]
                )
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {($ VSub_Name '$body')})
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair lhs:(LhsName name:currentSexp) op:Equal spids:[648])
                (assign_pair lhs:(LhsName name:currentResult) op:Equal spids:[650])
              ]
              spids: [646]
            )
            (While
              cond: [
                (Sentence
                  child: 
                    (Pipeline
                      children: [
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (isEmpty_c)
                          } {(DQ (${ VSub_Name body))}
                        )
                      ]
                      negated: T
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (first)
                          } {(DQ (${ VSub_Name body))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentSexp)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [692]
                        )
                      ]
                      spids: [692]
                    )
                    (Sentence
                      child: 
                        (C 
                          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') 
                            (Lit_Other ':') (rest)
                          } {(DQ (${ VSub_Name body))}
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:body)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [714]
                        )
                      ]
                      spids: [714]
                    )
                    (C {(evaluator) (Lit_Other ':') (Lit_Other ':') (eval)} 
                      {($ VSub_Name '$runningEnv')} {($ VSub_Name '$currentSexp')}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:currentResult)
                          op: Equal
                          rhs: {(${ VSub_Name RESULT)}
                          spids: [730]
                        )
                      ]
                      spids: [730]
                    )
                  ]
                  spids: [673 736]
                )
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name currentResult))}
                  spids: [739]
                )
              ]
              spids: [739]
            )
          ]
          spids: [244]
        )
      spids: [232 243]
    )
    (FuncDef
      name: 'variable::Lambda::getEnv'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('variable::Lambda::getEnv ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 779]
                )
              ]
              spids: [16777215 792]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:lambdaToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [797]
                )
              ]
              spids: [795]
            )
            (C 
              {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name lambdaToken))} {(Lambda)}
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$lambdaToken')})
            (Assignment
              keyword: Assign_Declare
              flags: [-a]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:data)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                  spids: [835]
                )
              ]
              spids: [831]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name data>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                          spids: [846 851]
                        )
                      )
                    }
                  spids: [844]
                )
              ]
              spids: [844]
            )
          ]
          spids: [761]
        )
      spids: [749 760]
    )
    (FuncDef
      name: 'variable::Lambda::getFormalArgs'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('variable::Lambda::getFormalArgs ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 887]
                )
              ]
              spids: [16777215 900]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:lambdaToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [905]
                )
              ]
              spids: [903]
            )
            (C 
              {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name lambdaToken))} {(Lambda)}
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$lambdaToken')})
            (Assignment
              keyword: Assign_Declare
              flags: [-a]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:data)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                  spids: [943]
                )
              ]
              spids: [939]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name data>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                          spids: [954 959]
                        )
                      )
                    }
                  spids: [952]
                )
              ]
              spids: [952]
            )
          ]
          spids: [869]
        )
      spids: [857 868]
    )
    (FuncDef
      name: 'variable::Lambda::getBody'
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name VARIABLES_DEBUG)}
                              right: {(1)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: (C {(stderr)} {(DQ ('variable::Lambda::getBody ') (${ VSub_At '@'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 995]
                )
              ]
              spids: [16777215 1008]
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:lambdaToken)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1013]
                )
              ]
              spids: [1011]
            )
            (C 
              {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') 
                (instanceOfOrExit)
              } {(DQ (${ VSub_Name lambdaToken))} {(Lambda)}
            )
            (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$lambdaToken')})
            (Assignment
              keyword: Assign_Declare
              flags: [-a]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:data)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])}
                  spids: [1051]
                )
              ]
              spids: [1047]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name data>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)}))
                          spids: [1062 1067]
                        )
                      )
                    }
                  spids: [1060]
                )
              ]
              spids: [1060]
            )
          ]
          spids: [977]
        )
      spids: [965 976]
    )
    (FuncDef
      name: 'variable::Lambda::toSexp'
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:token)
                  op: Equal
                  rhs: {(DQ (${ VSub_Number 1))}
                  spids: [1090]
                )
              ]
              spids: [1088]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') 
                    (getEnv)
                  } {($ VSub_Name '$token')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:env)
                  op: Equal
                  rhs: {($ VSub_Name '$RESULT')}
                  spids: [1112]
                )
              ]
              spids: [1110]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') 
                    (getFormalArgs)
                  } {($ VSub_Name '$token')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:args)
                  op: Equal
                  rhs: {($ VSub_Name '$RESULT')}
                  spids: [1130]
                )
              ]
              spids: [1128]
            )
            (Sentence
              child: 
                (C 
                  {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') 
                    (getBody)
                  } {($ VSub_Name '$token')}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:body)
                  op: Equal
                  rhs: {($ VSub_Name '$RESULT')}
                  spids: [1148]
                )
              ]
              spids: [1146]
            )
            (Sentence
              child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (toSexp)} {($ VSub_Name '$args')})
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:argsString)
                  op: Equal
                  rhs: {($ VSub_Name '$RESULT')}
                  spids: [1164]
                )
              ]
              spids: [1162]
            )
            (Sentence
              child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (toSexp)} {($ VSub_Name '$body')})
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_Declare
              pairs: [
                (assign_pair
                  lhs: (LhsName name:bodyString)
                  op: Equal
                  rhs: {($ VSub_Name '$RESULT')}
                  spids: [1179]
                )
              ]
              spids: [1177]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Declare
                  pairs: [(assign_pair lhs:(LhsName name:bodyLen) op:Equal spids:[1185])]
                  spids: [1183]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:bodyLen)
                  right: 
                    (ArithBinary
                      op_id: Arith_Minus
                      left: 
                        (ArithWord
                          w: 
                            {
                              (BracedVarSub
                                token: <VSub_Name bodyString>
                                prefix_op: VSub_Pound
                                spids: [1195 1198]
                              )
                            }
                        )
                      right: (ArithWord w:{(Lit_Digits 2)})
                    )
                )
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:bodyString)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name bodyString>
                        suffix_op: 
                          (Slice
                            begin: (ArithWord w:{(Lit_Digits 1)})
                            length: (ArithVarRef name:bodyLen)
                          )
                        spids: [1209 1215]
                      )
                    }
                  spids: [1208]
                )
              ]
              spids: [1208]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RESULT)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('(lambda ') (${ VSub_Name argsString) (' ') ($ VSub_Name '$bodyString') (')'))
                    }
                  spids: [1219]
                )
              ]
              spids: [1219]
            )
          ]
          spids: [1085]
        )
      spids: [1073 1084]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {($ VSub_Number '$0')} {(KW_Bang '!') (Lit_Other '=')} 
                  {($ VSub_Name '$BASH_SOURCE')} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(ControlFlow token:<ControlFlow_Return return>)]
          spids: [16777215 1253]
        )
      ]
      spids: [16777215 1258]
    )
    (C {(.)} 
      {
        (BracedVarSub
          token: <VSub_Name BASH_SOURCE>
          suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')})
          spids: [1263 1268]
        ) (/test.sh)
      }
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaEnv)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1285]
        )
      ]
      spids: [1285]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaArgs)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1302]
        )
      ]
      spids: [1302]
    )
    (C {(appendToList)} {($ VSub_Name '$lambdaArgs')} {(Identifier)} {(DQ (x))} {(Identifier)} {(DQ (y))})
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaBody)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1335]
        )
      ]
      spids: [1335]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1352]
        )
      ]
      spids: [1352]
    )
    (C {(appendToList)} {($ VSub_Name '$lambdaCode')} {(Identifier)} {(SQ <'*'>)} {(Identifier)} {(DQ (x))} 
      {(Identifier)} {(DQ (y))}
    )
    (C 
      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (append)} {($ VSub_Name '$lambdaBody')} {($ VSub_Name '$lambdaCode')}
    )
    (Sentence
      child: 
        (C {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') (new)} 
          {
            (DQ ($ VSub_Name '$lambdaEnv') (' ') ($ VSub_Name '$lambdaArgs') (' ') 
              ($ VSub_Name '$lambdaBody')
            )
          }
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambda)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1411]
        )
      ]
      spids: [1411]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:callingArgs)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1429]
        )
      ]
      spids: [1429]
    )
    (C {(appendToList)} {($ VSub_Name '$callingArgs')} {(Integer)} {(5)} {(Integer)} {(3)})
    (C {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') (call)} 
      {($ VSub_Name '$lambda')} {($ VSub_Name '$callingArgs')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 15'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('((lambda (x y) (* x y) 5 3)'))}
    )
    (Sentence child:(C {(createTestEnv)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaEnv)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1509]
        )
      ]
      spids: [1509]
    )
    (C {(setInEnv)} {($ VSub_Name '$lambdaEnv')} {(DQ (y))} {(Integer)} {(10)})
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaArgs)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1538]
        )
      ]
      spids: [1538]
    )
    (C {(appendToList)} {($ VSub_Name '$lambdaArgs')} {(Identifier)} {(DQ (x))})
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaBody)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1565]
        )
      ]
      spids: [1565]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambdaCode)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1582]
        )
      ]
      spids: [1582]
    )
    (C {(appendToList)} {($ VSub_Name '$lambdaCode')} {(Identifier)} {(SQ <'*'>)} {(Identifier)} {(DQ (x))} 
      {(Identifier)} {(DQ (y))}
    )
    (C 
      {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (append)} {($ VSub_Name '$lambdaBody')} {($ VSub_Name '$lambdaCode')}
    )
    (Sentence
      child: 
        (C {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') (new)} 
          {
            (DQ ($ VSub_Name '$lambdaEnv') (' ') ($ VSub_Name '$lambdaArgs') (' ') 
              ($ VSub_Name '$lambdaBody')
            )
          }
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:lambda)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1641]
        )
      ]
      spids: [1641]
    )
    (Sentence
      child: 
        (C 
          {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new)}
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:callingArgs)
          op: Equal
          rhs: {(DQ (${ VSub_Name RESULT))}
          spids: [1659]
        )
      ]
      spids: [1659]
    )
    (C {(appendToList)} {($ VSub_Name '$callingArgs')} {(Integer)} {(5)})
    (C {(variable) (Lit_Other ':') (Lit_Other ':') (Lambda) (Lit_Other ':') (Lit_Other ':') (call)} 
      {($ VSub_Name '$lambda')} {($ VSub_Name '$callingArgs')}
    )
    (Sentence
      child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {(DQ (${ VSub_Name RESULT))})
      terminator: <Op_Semi ';'>
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('Integer :: 50'))} 
      {(DQ (${ VSub_Name RESULT))} {(DQ ('env(y=10) ((lambda (x) (* x y) 5)'))}
    )
    (C {(assert) (Lit_Other ':') (Lit_Other ':') (report)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  ops: [Op_DAmp]
                  children: [
                    (C {(Lit_Other '[')} 
                      {
                        (BracedVarSub
                          token: <VSub_Number 1>
                          suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)})
                          spids: [1739 1743]
                        )
                      } {(Lit_Other ']')}
                    )
                    (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=') (Lit_Other '=')} 
                      {(DQ (debug))} {(Lit_Other ']')}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(variable) (Lit_Other ':') (Lit_Other ':') (printMetadata)})]
          spids: [16777215 1765]
        )
      ]
      spids: [16777215 1774]
    )
  ]
)