+// TODO Make this conditionally added
+Object operator$concatenate(Object left, Object right)
+{
+ switch(left.type) {
+ case STRING_CONCATENATION:
+ left.instance.string_concatenation->referenceCount++;
+ break;
+
+ case STRING_LITERAL:
+ break;
+
+ default:
+ assert(false);
+ }
+
+ switch(right.type) {
+ case STRING_CONCATENATION:
+ right.instance.string_concatenation->referenceCount++;
+ break;
+
+ case STRING_LITERAL:
+ break;
+
+ default:
+ assert(false);
+ }
+
+ StringConcatenation* concatenation = malloc(sizeof(StringConcatenation));
+ concatenation->referenceCount = 1;
+ concatenation->left = left;
+ concatenation->right = right;
+
+ Object result = { STRING_CONCATENATION, (Instance)concatenation };
+ return result;
+}
+