Index: src/examples/gc_no_raii/bug-repro/blockers/explicit_cast.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/blockers/explicit_cast.c	(revision e8b15358dd70456efc627d2f5ecab77174ae6caf)
+++ src/examples/gc_no_raii/bug-repro/blockers/explicit_cast.c	(revision e8b15358dd70456efc627d2f5ecab77174ae6caf)
@@ -0,0 +1,22 @@
+
+#include <stdbool.h>
+#include <stdint.h>
+
+struct gcpointer_t
+{
+	intptr_t ptr;
+	struct gcpointer_t* next;
+};
+
+forall(otype T)
+struct gcpointer
+{
+	gcpointer_t internal;
+};
+
+forall(otype T)
+static inline gcpointer(T) gcmalloc()
+{
+    gcpointer(T) test;
+    return test;
+}
Index: src/examples/gc_no_raii/bug-repro/blockers/file_scope.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/blockers/file_scope.c	(revision e8b15358dd70456efc627d2f5ecab77174ae6caf)
+++ src/examples/gc_no_raii/bug-repro/blockers/file_scope.c	(revision e8b15358dd70456efc627d2f5ecab77174ae6caf)
@@ -0,0 +1,18 @@
+
+#include <stdbool.h>
+#include <stdlib>
+
+#define POOL_SIZE_EXP 24
+#define POOL_SIZE_BYTES 0x1 << POOL_SIZE_EXP
+#define POOL_PTR_MASK ~(POOL_SIZE_BYTES - 1)
+
+#define CARDS_SIZE_EXP 12
+#define CARDS_SIZE_BYTES 0x1 << CARDS_SIZE_EXP
+#define CARDS_OFFSET_MASK (~(CARDS_SIZE_BYTES - 1)) & (POOL_SIZE_BYTES - 1)
+#define CARDS_COUNT POOL_SIZE_BYTES / CARDS_SIZE_BYTES
+
+struct card_table_t
+{
+	size_t count;
+	void* cards_start[CARDS_COUNT];
+};
Index: src/examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c	(revision e8b15358dd70456efc627d2f5ecab77174ae6caf)
+++ src/examples/gc_no_raii/bug-repro/blockers/recursive_realloc.c	(revision e8b15358dd70456efc627d2f5ecab77174ae6caf)
@@ -0,0 +1,21 @@
+
+#include <stdbool.h>
+#include <stdlib>
+
+trait allocator_c(otype T, otype allocator_t)
+{
+	void realloc(allocator_t* const, size_t);
+};
+
+forall(otype T)
+struct heap_allocator
+{
+	T* storage;
+	size_t capacity;
+};
+
+forall(otype T)
+inline void realloc(heap_allocator(T) *const this, size_t size)
+{
+	this->storage = (T*)realloc((void*)this->storage, this->capacity);
+}
