(command.CommandList
  children: [
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} 
          {
            (braced_var_sub
              token: <Id.VSub_Name EVALUATOR__FUNCTIONS_BUILTIN_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__FUNCTIONS_BUILTIN_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 '*'>}
            )
        ) <'/environment.sh'>
      }
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::add'
      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::functions::builtin::add '> (${ Id.VSub_At '@'))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [78 93]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [156 169]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'result='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name env))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [347]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [355 376]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [421]
                        )
                      ]
                    )
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_PlusEqual
                          left: <Id.Lit_ArithVarLike result>
                          right: {(${ Id.VSub_Name currentValue)}
                        )
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [458]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Integer>} 
              {(DQ (${ Id.VSub_Name result))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [484]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::subtract'
      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::functions::builtin::subtract '> (${ Id.VSub_At '@'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [512 527]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [590 603]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'result='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [781]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [789 810]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [855]
                        )
                      ]
                    )
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_MinusEqual
                          left: <Id.Lit_ArithVarLike result>
                          right: {(DQ (${ Id.VSub_Name currentValue))}
                        )
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [894]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Integer>} 
              {(DQ (${ Id.VSub_Name result))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [920]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::multiply'
      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::functions::builtin::multiply '> (${ Id.VSub_At '@'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [948 963]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1026 1039]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'result='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [1217]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [1225 1246]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [1291]
                        )
                      ]
                    )
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_StarEqual
                          left: <Id.Lit_ArithVarLike result>
                          right: {(DQ (${ Id.VSub_Name currentValue))}
                        )
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [1330]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Integer>} 
              {(DQ (${ Id.VSub_Name result))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [1356]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::divide'
      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::functions::builtin::divide '> (${ Id.VSub_At '@'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1384 1399]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1462 1475]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'result='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [1653]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [1661 1682]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [1727]
                        )
                      ]
                    )
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_SlashEqual
                          left: <Id.Lit_ArithVarLike result>
                          right: {(DQ (${ Id.VSub_Name currentValue))}
                        )
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [1766]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Integer>} 
              {(DQ (${ Id.VSub_Name result))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [1792]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::equals'
      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::functions::builtin::equals '> (${ Id.VSub_At '@'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1820 1835]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1898 1911]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'first='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [2089]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [2097 2118]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [2163]
                        )
                      ]
                    )
                    (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 '$first')}
                                          right: {($ Id.VSub_DollarName '$currentValue')}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} 
                              {<false>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:RESULT)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                                  spids: [2197]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                            )
                          ]
                          spids: [2171 2184]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [2226]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [2248]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return>)
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::greaterthan'
      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::functions::builtin::equals '> (${ Id.VSub_At '@'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [2279 2294]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [2357 2370]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'first='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [2548]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [2556 2577]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [2622]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.LogicalNot
                                          child: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_gt
                                              left: {($ Id.VSub_DollarName '$first')}
                                              right: {($ Id.VSub_DollarName '$currentValue')}
                                            )
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} 
                              {<false>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:RESULT)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                                  spids: [2658]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                            )
                          ]
                          spids: [2630 2645]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [2687]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [2709]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return>)
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::lessthan'
      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::functions::builtin::equals '> (${ Id.VSub_At '@'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [2740 2755]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [2818 2831]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'first='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [3009]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [3017 3038]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [3083]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.LogicalNot
                                          child: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_lt
                                              left: {($ Id.VSub_DollarName '$first')}
                                              right: {($ Id.VSub_DollarName '$currentValue')}
                                            )
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} 
                              {<false>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:RESULT)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                                  spids: [3119]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                            )
                          ]
                          spids: [3091 3106]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [3148]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [3170]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return>)
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::greaterthanorequal'
      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::functions::builtin::equals '> (${ Id.VSub_At '@'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [3201 3216]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3279 3292]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'first='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [3470]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [3478 3499]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [3544]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.LogicalNot
                                          child: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_ge
                                              left: {($ Id.VSub_DollarName '$first')}
                                              right: {($ Id.VSub_DollarName '$currentValue')}
                                            )
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} 
                              {<false>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:RESULT)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                                  spids: [3580]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                            )
                          ]
                          spids: [3552 3567]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [3609]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [3631]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return>)
          ]
        )
    )
    (command.ShFunction
      name: 'evaluator::functions::builtin::lessthanorequal'
      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::functions::builtin::equals '> (${ Id.VSub_At '@'))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [3662 3677]
                )
              ]
            )
            (C {<declare>} {<Id.Lit_VarLike 'env='> (DQ (${ Id.VSub_Number 1))})
            (C {<declare>} {<Id.Lit_VarLike 'functionName='> (DQ (${ Id.VSub_Number 2))})
            (C {<declare>} {<Id.Lit_VarLike 'argsToken='> (DQ (${ Id.VSub_Number 3))})
            (C 
              {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                <Id.Lit_Colon ':'> <length>
              } {(DQ (${ Id.VSub_Name argsToken))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.Op_Less
                                  left: {($ Id.VSub_DollarName '$RESULT')}
                                  right: {<2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<stderr>} {(DQ <'add not valid with less than 2 arguments'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3740 3753]
                )
              ]
            )
            (command.Sentence
              child: 
                (C 
                  {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> <Id.Lit_Colon ':'> 
                    <Id.Lit_Colon ':'> <first>
                  } {(DQ (${ Id.VSub_Name argsToken))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'headToken='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} {(DQ (${ Id.VSub_Name env))} 
              {(DQ (${ Id.VSub_Name RESULT))}
            )
            (command.Sentence
              child: 
                (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                  {(DQ (${ Id.VSub_Name RESULT))}
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'first='> (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 _>
            )
            (C {<declare>} {<Id.Lit_VarLike 'rest='> (DQ (${ Id.VSub_Name RESULT))})
            (C {<declare>} {<currentToken>})
            (C {<declare>} {<currentValue>})
            (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 rest))}
                            )
                          ]
                          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 rest))}
                    )
                    (C {<evaluator> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <eval>} 
                      {(DQ (${ Id.VSub_Name envToken))} {(DQ (${ Id.VSub_Name RESULT))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentToken)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [3931]
                        )
                      ]
                    )
                    (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>
                                          } {(DQ (${ Id.VSub_Name currentToken))} {<Integer>}
                                        )
                                      ]
                                      negated: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <type>} 
                              {(${ Id.VSub_Name currentToken)}
                            )
                            (C {<stderr>} {(DQ <'Cannot add type ['> (${ Id.VSub_Name RESULT) <']'>)})
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [3939 3960]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <value>} 
                          {(DQ (${ Id.VSub_Name currentToken))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:currentValue)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [4005]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.LogicalNot
                                          child: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_le
                                              left: {($ Id.VSub_DollarName '$first')}
                                              right: {($ Id.VSub_DollarName '$currentValue')}
                                            )
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} 
                              {<false>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:RESULT)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                                  spids: [4041]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                            )
                          ]
                          spids: [4013 4028]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C 
                          {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <LinkedList> 
                            <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <rest>
                          } {(DQ (${ Id.VSub_Name rest))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rest)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name RESULT))}
                          spids: [4070]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<variable> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <new>} {<Boolean>} {<true>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:RESULT)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name RESULT))}
                  spids: [4092]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return>)
          ]
        )
    )
  ]
)