Index: src/examples/gc_no_raii/bug-repro/deref.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/deref.c	(revision 273080fde491d7a6794d14462b05fda5b6eae6e6)
+++ src/examples/gc_no_raii/bug-repro/deref.c	(revision 273080fde491d7a6794d14462b05fda5b6eae6e6)
@@ -0,0 +1,19 @@
+    forall(otype T)
+    struct wrap
+    {
+        T val;
+    };
+
+    forall(otype T)
+    T *? (wrap(T) rhs)
+    {
+        return rhs.val;
+    }
+
+    int main(int argc, char const *argv[])
+    {
+        wrap(int) test;
+        test.val = 3;
+        int i = *test;
+        return 0;
+    }
Index: src/examples/gc_no_raii/bug-repro/malloc.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/malloc.c	(revision 273080fde491d7a6794d14462b05fda5b6eae6e6)
+++ src/examples/gc_no_raii/bug-repro/malloc.c	(revision 273080fde491d7a6794d14462b05fda5b6eae6e6)
@@ -0,0 +1,33 @@
+forall(otype T)
+struct wrapper
+{
+    T val;
+};
+
+forall(otype T)
+void ctor(wrapper(T)* this)
+{
+    this->val = 0;
+}
+
+forall(otype T)
+wrapper(T) gcmalloc()
+{
+    wrapper(T) w;
+    ctor(&w);
+    return w;
+}
+
+forall(otype T)
+wrapper(T)* ?=? (wrapper(T)* lhs, wrapper(T)* rhs)
+{
+    lhs->val = rhs->val;
+    return lhs;
+}
+
+int main(int argc, char *argv[])
+{
+    wrapper(int) test;
+    test = gcmalloc();
+    return 0;
+}
Index: src/examples/gc_no_raii/bug-repro/return.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/return.c	(revision 273080fde491d7a6794d14462b05fda5b6eae6e6)
+++ src/examples/gc_no_raii/bug-repro/return.c	(revision 273080fde491d7a6794d14462b05fda5b6eae6e6)
@@ -0,0 +1,27 @@
+forall(otype T)
+struct wrapper
+{
+	T value;
+};
+
+forall(otype T)
+wrapper(T) create()
+{
+	wrapper(T) test;
+	return test;
+}
+
+forall(otype T)
+wrapper(T)* ?=?(wrapper(T)* lhs, wrapper(T)* rhs)
+{
+	lhs->value = rhs->value;
+	return lhs;
+}
+
+
+int main(int argc, char const *argv[])
+{
+	wrapper(int) test;
+	test = create();
+	return 0;
+}
Index: src/examples/gc_no_raii/bug-repro/zero.c
===================================================================
--- src/examples/gc_no_raii/bug-repro/zero.c	(revision 273080fde491d7a6794d14462b05fda5b6eae6e6)
+++ src/examples/gc_no_raii/bug-repro/zero.c	(revision 273080fde491d7a6794d14462b05fda5b6eae6e6)
@@ -0,0 +1,25 @@
+forall(otype T)
+struct wrap
+{
+    T val;
+};
+
+forall(otype T)
+int ?==? (wrap(T) lhs, wrap(T) rhs)
+{
+    return 0;
+}
+
+/*
+struct wrap(int) 0;
+/*/
+forall(otype T)
+struct wrap(T) 0;
+//*/
+
+int main(int argc, char const *argv[])
+{
+    wrap(int) test;
+    if(test == 0) { return 1; }
+    return 0;
+}
