(command.CommandList
  children: [
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} 
          {
            (braced_var_sub
              token: <Id.VSub_Name CALLABLE_LAMBDA_SH>
              suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{<true>})
            )
          } {<Id.Lit_RBracket ']'>}
        )
        (command.ControlFlow token:<Id.ControlFlow_Return return>)
      ]
    )
    (C {<declare>} {<-g>} {<Id.Lit_VarLike 'CALLABLE_LAMBDA_SH='> <true>})
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>})
        ) <'/common.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>})
        ) <'/variables.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>})
        ) <'/variables.linkedlist.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>})
        ) <'/specialforms.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>})
        ) <'/evaluator.sh'>
      }
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>})
        ) <'/callable.sh'>
      }
    )
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <define>
      } {<Lambda>} {<Function>}
    )
    (command.ShFunction
      name: 'variable::Lambda::new'
      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 VARIABLES_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'variable::Lambda::new '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [170 185]
                )
              ]
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Lambda>} 
              {(DQ (${ Id.VSub_At '@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: 'variable::Lambda::call'
      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 VARIABLES_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'variable::Lambda::call '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [247 262]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'passedArgs='> (DQ (${ Id.VSub_Number 2))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <instanceOfOrExit>
              } {(DQ (${ Id.VSub_Name lambdaToken))} {<Lambda>}
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <length>
                  } {($ Id.VSub_DollarName '$passedArgs')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'passedArgCount='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <getEnv>
                  } {($ Id.VSub_DollarName '$lambdaToken')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <getFormalArgs>
                  } {($ Id.VSub_DollarName '$lambdaToken')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'formalArgs='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <getBody>
                  } {($ Id.VSub_DollarName '$lambdaToken')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'body='> (DQ (${ Id.VSub_Name RESULT))})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <length>
                  } {($ Id.VSub_DollarName '$formalArgs')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'formalArgCount='> (DQ (${ Id.VSub_Name RESULT))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ne
                                  left: {($ Id.VSub_DollarName '$passedArgCount')}
                                  right: {($ Id.VSub_DollarName '$formalArgCount')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} 
                      {
                        (DQ <'lambda: passed arg count ('> (${ Id.VSub_Name passedArgCount) 
                          <') != format arg count ('> (${ Id.VSub_Name formalArgCount) <')'>
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [427 440]
                )
              ]
            )
            (command.Sentence
              child: 
                (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <pushScope>} 
                  {($ Id.VSub_DollarName '$env')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'runningEnv='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<thisKeyToken>})
            (C {<declare>} {<thisValueToken>})
            (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 formalArgs))}
                            )
                          ]
                          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 formalArgs))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:thisKeyToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [535]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <first>
                          } {(DQ (${ Id.VSub_Name passedArgs))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:thisValueToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [559]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name formalArgs))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:formalArgs)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [584]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name passedArgs))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:passedArgs)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [608]
                        )
                      ]
                    )
                    (C {<environment> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <setVariable>} 
                      {(DQ (${ Id.VSub_Name runningEnv))} {($ Id.VSub_DollarName '$thisKeyToken')} {($ Id.VSub_DollarName '$thisValueToken')}
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <debug>} 
              {($ Id.VSub_DollarName '$body')}
            )
            (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 body))}
                            )
                          ]
                          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 body))}
                        )
                      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: [692]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name body))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:body)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name RESULT)}
                          spids: [714]
                        )
                      ]
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {($ Id.VSub_DollarName '$runningEnv')} {($ 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: [730]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name currentResult))}
                  spids: [739]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'variable::Lambda::getEnv'
      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 VARIABLES_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'variable::Lambda::getEnv '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [764 779]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 1))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <instanceOfOrExit>
              } {(DQ (${ Id.VSub_Name lambdaToken))} {<Lambda>}
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
              {($ Id.VSub_DollarName '$lambdaToken')}
            )
            (C {<declare>} {<-a>} 
              {<Id.Lit_VarLike 'data='> 
                (sh_array_literal
                  left: <Id.Op_LParen _>
                  words: [{(${ Id.VSub_Name RESULT)}]
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name data>
                          bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                        )
                      )
                    }
                  spids: [844]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'variable::Lambda::getFormalArgs'
      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 VARIABLES_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (C {<stderr>} {(DQ <'variable::Lambda::getFormalArgs '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [872 887]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 1))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <instanceOfOrExit>
              } {(DQ (${ Id.VSub_Name lambdaToken))} {<Lambda>}
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
              {($ Id.VSub_DollarName '$lambdaToken')}
            )
            (C {<declare>} {<-a>} 
              {<Id.Lit_VarLike 'data='> 
                (sh_array_literal
                  left: <Id.Op_LParen _>
                  words: [{(${ Id.VSub_Name RESULT)}]
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name data>
                          bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                        )
                      )
                    }
                  spids: [952]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'variable::Lambda::getBody'
      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 VARIABLES_DEBUG)}
                                  right: {<1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<stderr>} {(DQ <'variable::Lambda::getBody '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [980 995]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'lambdaToken='> (DQ (${ Id.VSub_Number 1))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <instanceOfOrExit>
              } {(DQ (${ Id.VSub_Name lambdaToken))} {<Lambda>}
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
              {($ Id.VSub_DollarName '$lambdaToken')}
            )
            (C {<declare>} {<-a>} 
              {<Id.Lit_VarLike 'data='> 
                (sh_array_literal
                  left: <Id.Op_LParen _>
                  words: [{(${ Id.VSub_Name RESULT)}]
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name data>
                          bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>})
                        )
                      )
                    }
                  spids: [1060]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'variable::Lambda::toSexp'
      body: 
        (BraceGroup
          children: [
            (C {<declare>} {<Id.Lit_VarLike 'token='> (DQ (${ Id.VSub_Number 1))})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <getEnv>
                  } {($ Id.VSub_DollarName '$token')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> ($ Id.VSub_DollarName '$RESULT')})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <getFormalArgs>
                  } {($ Id.VSub_DollarName '$token')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'args='> ($ Id.VSub_DollarName '$RESULT')})
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <getBody>
                  } {($ Id.VSub_DollarName '$token')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'body='> ($ Id.VSub_DollarName '$RESULT')})
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <toSexp>} 
                  {($ Id.VSub_DollarName '$args')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'argsString='> ($ Id.VSub_DollarName '$RESULT')})
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <toSexp>} 
                  {($ Id.VSub_DollarName '$body')}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'bodyString='> ($ Id.VSub_DollarName '$RESULT')})
            (command.Sentence child:(C {<declare>} {<bodyLen>}) terminator:<Id.Op_Semi _>)
            (command.DParen
              child: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike bodyLen>
                  right: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Minus
                      left: 
                        {(braced_var_sub token:<Id.VSub_Name bodyString> prefix_op:(Id.VSub_Pound))}
                      right: {<Id.Lit_Digits 2>}
                    )
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:bodyString)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name bodyString>
                        suffix_op: 
                          (suffix_op.Slice
                            begin: {<Id.Lit_Digits 1>}
                            length: <Id.Lit_ArithVarLike bodyLen>
                          )
                      )
                    }
                  spids: [1208]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'(lambda '> (${ Id.VSub_Name argsString) <' '> 
                        ($ Id.VSub_DollarName '$bodyString') <')'>
                      )
                    }
                  spids: [1219]
                )
              ]
            )
          ]
        )
    )
    (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: [1239 1253]
        )
      ]
    )
    (C {<.>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name BASH_SOURCE>
          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<Id.Lit_Slash '/'> <'*'>})
        ) <'/test.sh'>
      }
    )
    (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: [1285]
            )
          ]
        )
      ]
    )
    (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: [1302]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaArgs')} {<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:lambdaBody)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [1335]
            )
          ]
        )
      ]
    )
    (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: [1352]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaCode')} {<Identifier>} {(SQ <'*'>)} {<Identifier>} 
      {(DQ <x>)} {<Identifier>} {(DQ <y>)}
    )
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
        <Id.Lit_Colon ':'> <append>
      } {($ Id.VSub_DollarName '$lambdaBody')} {($ Id.VSub_DollarName '$lambdaCode')}
    )
    (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 '$lambdaBody')
                )
              }
            )
          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: [1411]
            )
          ]
        )
      ]
    )
    (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:callingArgs)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [1429]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$callingArgs')} {<Integer>} {<5>} {<Integer>} {<3>})
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <call>
      } {($ Id.VSub_DollarName '$lambda')} {($ Id.VSub_DollarName '$callingArgs')}
    )
    (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 :: 15'>)} 
          {(DQ (${ Id.VSub_Name RESULT))} {(DQ <'((lambda (x y) (* x y) 5 3)'>)}
        )
      ]
    )
    (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: [1509]
            )
          ]
        )
      ]
    )
    (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: [1538]
            )
          ]
        )
      ]
    )
    (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:lambdaBody)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [1565]
            )
          ]
        )
      ]
    )
    (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: [1582]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$lambdaCode')} {<Identifier>} {(SQ <'*'>)} {<Identifier>} 
      {(DQ <x>)} {<Identifier>} {(DQ <y>)}
    )
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
        <Id.Lit_Colon ':'> <append>
      } {($ Id.VSub_DollarName '$lambdaBody')} {($ Id.VSub_DollarName '$lambdaCode')}
    )
    (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 '$lambdaBody')
                )
              }
            )
          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: [1641]
            )
          ]
        )
      ]
    )
    (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:callingArgs)
              op: assign_op.Equal
              rhs: {(DQ (${ Id.VSub_Name RESULT))}
              spids: [1659]
            )
          ]
        )
      ]
    )
    (C {<appendToList>} {($ Id.VSub_DollarName '$callingArgs')} {<Integer>} {<5>})
    (C 
      {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <Lambda> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <call>
      } {($ Id.VSub_DollarName '$lambda')} {($ Id.VSub_DollarName '$callingArgs')}
    )
    (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(y=10) ((lambda (x) (* x y) 5)'>)}
        )
      ]
    )
    (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 op_id: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: [1735 1765]
        )
      ]
    )
  ]
)