Index: tests/concurrent/actors/.expect/inherit.txt
===================================================================
--- tests/concurrent/actors/.expect/inherit.txt	(revision 19508377fe78200b419e5dbe59c6a77ec109e562)
+++ tests/concurrent/actors/.expect/inherit.txt	(revision 19508377fe78200b419e5dbe59c6a77ec109e562)
@@ -0,0 +1,6 @@
+Start
+A
+A
+A
+A
+Finished
Index: tests/concurrent/actors/executor.cfa
===================================================================
--- tests/concurrent/actors/executor.cfa	(revision e54b4e9d911834b6b93523a2ac2ada54a1bee5ef)
+++ tests/concurrent/actors/executor.cfa	(revision 19508377fe78200b419e5dbe59c6a77ec109e562)
@@ -15,5 +15,4 @@
 };
 void ?{}( d_actor & this ) with(this) {
-    ((actor &)this){};
     id = ids++;
     gstart = (&this + (id / Set * Set - id)); // remember group-start array-element
Index: tests/concurrent/actors/inherit.cfa
===================================================================
--- tests/concurrent/actors/inherit.cfa	(revision 19508377fe78200b419e5dbe59c6a77ec109e562)
+++ tests/concurrent/actors/inherit.cfa	(revision 19508377fe78200b419e5dbe59c6a77ec109e562)
@@ -0,0 +1,52 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+#include <mutex_stmt.hfa>
+
+struct Server { inline actor; };
+struct Server2 { inline Server; int b; };
+struct D_msg { int a; inline message; };
+struct D_msg2 { inline D_msg; };
+
+void ^?{}( Server2 & this ) { mutex(sout) sout | 'A'; }
+void ?{}( D_msg & this ) { set_allocation( this, Delete ); }
+void ^?{}( D_msg & this ) { mutex(sout) sout | 'A'; }
+
+Allocation handle() {
+    return Finished;
+}
+
+Allocation receive( Server & receiver, D_msg & msg ) { return handle(); }
+Allocation receive( Server & receiver, D_msg2 & msg ) { return handle(); }
+Allocation receive( Server2 & receiver, D_msg & msg ) { return Delete; }
+Allocation receive( Server2 & receiver, D_msg2 & msg ) { return Delete; }
+
+int main() {
+    sout | "Start";
+    {
+        start_actor_system();
+        D_msg * dm = alloc();
+        (*dm){};
+        D_msg2 dm2;
+        Server2 * s = alloc();
+        (*s){};
+        Server2 * s2 = alloc();
+        (*s2){};
+        *s << *dm;
+        *s2 << dm2;
+        stop_actor_system();
+    }
+    {
+        start_actor_system();
+        Server s[2];
+        D_msg * dm = alloc();
+        (*dm){};
+        D_msg2 dm2;
+        s[0] << *dm;
+        s[1] << dm2;
+        stop_actor_system();
+    }
+    sout | "Finished";
+}
Index: tests/concurrent/actors/poison.cfa
===================================================================
--- tests/concurrent/actors/poison.cfa	(revision e54b4e9d911834b6b93523a2ac2ada54a1bee5ef)
+++ tests/concurrent/actors/poison.cfa	(revision 19508377fe78200b419e5dbe59c6a77ec109e562)
@@ -5,5 +5,8 @@
 #include <stdio.h>
 
-struct Server { inline actor; };
+struct Server { int val; inline actor; };
+
+void ?{}( Server & this ) { this.val = 999; }
+void ^?{}( Server & this ) { this.val = 777; }
 
 int main() {
@@ -12,31 +15,33 @@
     sout | "Finished";
     {
-    start_actor_system();
-    Server s[10];
-    for ( i; 10 ) {
-        s[i] << FinishedMsg;
-    }
-    stop_actor_system();
+        start_actor_system();
+        Server s[10];
+        for ( i; 10 ) {
+            s[i] << FinishedMsg;
+        }
+        stop_actor_system();
     }
 
     sout | "Delete";
     {
-    start_actor_system();
-    for ( i; 10 ) {
-        Server * s = alloc();
-        (*s){};
-        (*s) << DeleteMsg;
-    }
-    stop_actor_system();
+        start_actor_system();
+        for ( i; 10 ) {
+            Server * s = alloc();
+            (*s){};
+            (*s) << DeleteMsg;
+        }
+        stop_actor_system();
     }
 
     sout | "Destroy";
     {
-    start_actor_system();
-    Server s[10];
-    for ( i; 10 ) {
-        s[i] << DestroyMsg;
-    }
-    stop_actor_system();
+        start_actor_system();
+        Server s[10];
+        for ( i; 10 )
+            s[i] << DestroyMsg;
+        stop_actor_system();
+        for ( i; 10 )
+            if (s[i].val != 777)
+                sout | "Error: dtor not called correctly.";
     }
 
