Index: doc/rob_thesis/examples/conclusions/dtor.c
===================================================================
--- doc/rob_thesis/examples/conclusions/dtor.c	(revision 1c38f5bb55ebc1de6c1c2ff5b860d4383c09dd2b)
+++ doc/rob_thesis/examples/conclusions/dtor.c	(revision 1c38f5bb55ebc1de6c1c2ff5b860d4383c09dd2b)
@@ -0,0 +1,11 @@
+forall(otype T)
+struct Box {
+  T x;
+};
+forall(otype T) void ^?{}(Box(T) * x);
+
+forall(otype T)
+void f(T x) {
+  T y = x;
+  Box(T) z = { x };
+}
Index: doc/rob_thesis/examples/conclusions/except.c
===================================================================
--- doc/rob_thesis/examples/conclusions/except.c	(revision 1c38f5bb55ebc1de6c1c2ff5b860d4383c09dd2b)
+++ doc/rob_thesis/examples/conclusions/except.c	(revision 1c38f5bb55ebc1de6c1c2ff5b860d4383c09dd2b)
@@ -0,0 +1,20 @@
+#include <stdio.h>
+typedef struct S {
+  int x;
+} S;
+
+void _dtor_S(S * s);
+//  {
+//   printf("called destructor!\n");
+// }
+
+void _ctor_S(struct S *s);
+//  {
+//   s->x = 123;
+// }
+
+int main() {
+  struct S _tmp3;
+  __attribute__((cleanup(_dtor_S))) struct S _tmp2 = (_ctor_S(&_tmp2), _tmp2);
+  printf("%d\n", _tmp2.x);
+}
Index: doc/rob_thesis/examples/conclusions/except.cc
===================================================================
--- doc/rob_thesis/examples/conclusions/except.cc	(revision 1c38f5bb55ebc1de6c1c2ff5b860d4383c09dd2b)
+++ doc/rob_thesis/examples/conclusions/except.cc	(revision 1c38f5bb55ebc1de6c1c2ff5b860d4383c09dd2b)
@@ -0,0 +1,31 @@
+#include <iostream>
+using namespace std;
+
+struct S {
+  int x;
+};
+
+void _dtor_S(S * s) {
+  cout << "called destructor!" << endl;
+}
+
+S f() {
+  throw 3;
+  return (S) { 0 };
+}
+
+void _ctor_S(struct S *s, struct S) {
+  s->x = 123;
+}
+
+int main() {
+  try {
+//    __attribute__((cleanup(_dtor_S))) S s = f();
+  struct S _tmp1;
+  struct S _tmp2 = (_ctor_S(&_tmp2, _tmp1), _tmp2);
+  cout << _tmp2.x << endl;
+
+  } catch(...) {
+
+  }
+}
