+Object builtin$pow = { CLOSURE, (Instance)(Closure){ NULL, builtin$pow$implementation } };
+{% endif %}
+
+Object builtin$negate$implementation(
+ EnvironmentPool* environmentPool,
+ Environment* parent,
+ size_t argc,
+ Stack* stack,
+ const unsigned long line,
+ jmp_buf parentJump)
+{
+ assert(argc == 1);
+
+ Object argument = Stack_pop(stack);
+
+ assert(argument.type == INTEGER);
+
+ Object result = (Object){
+ INTEGER,
+ (Instance)(int32_t) (-argument.instance.integer)
+ };
+
+ return result;
+}
+Object builtin$negate = { CLOSURE, (Instance)(Closure){ NULL, builtin$negate$implementation } };
+
+{% for op in ['lt', 'gt', 'lte', 'gte', 'eq', 'neq'] %}
+Object builtin${{ op }}$implementation(
+ EnvironmentPool* environmentPool,
+ Environment* parent,
+ size_t argc,
+ Stack* stack,
+ const unsigned long line,
+ jmp_buf parentJump)
+{
+ assert(argc == 2);
+
+ Object right = Stack_pop(stack);
+ Object left = Stack_pop(stack);
+
+ assert(left.type == INTEGER);
+ assert(right.type == INTEGER);
+
+ {% if op == 'lt' %}
+ if(left.instance.integer < right.instance.integer)
+ {% elif op == 'gt' %}
+ if(left.instance.integer > right.instance.integer)
+ {% elif op == 'lte' %}
+ if(left.instance.integer <= right.instance.integer)
+ {% elif op == 'gte' %}
+ if(left.instance.integer >= right.instance.integer)
+ {% elif op == 'eq' %}
+ if(left.instance.integer == right.instance.integer)
+ {% elif op == 'neq' %}
+ if(left.instance.integer != right.instance.integer)
+ {% endif %}
+ {
+ return builtin$true;
+ }
+ else
+ {
+ return builtin$false;
+ }
+}
+Object builtin${{ op }} = { CLOSURE, (Instance)(Closure){ NULL, builtin${{ op }}$implementation } };
+{% endfor %}
+
+Object builtin$concat$implementation(
+ EnvironmentPool* environmentPool,
+ Environment* parent,
+ size_t argc,
+ Stack* stack,
+ const unsigned long line,
+ jmp_buf parentJump)