Index: src/tests/avltree/avl.h
===================================================================
--- src/tests/avltree/avl.h	(revision 142cf5d5bc4083f9bfbdb71d2ae41cf1ec930d79)
+++ src/tests/avltree/avl.h	(revision 2afec66345a55139c8738d36411816676b2fe4d3)
@@ -23,5 +23,5 @@
 // forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p );
 
-forall(dtype T | { void ^?{}(T *); })
+forall(dtype T | { void ^?{}(T &); })
 void delete(T * x);
 
@@ -59,8 +59,8 @@
 
 forall(otype K | Comparable(K), otype V)
-void ?{}(tree(K, V) *t, K key, V value);
+void ?{}(tree(K, V) &t, K key, V value);
 
 forall(otype K, otype V)
-void ^?{}(tree(K, V) * t);
+void ^?{}(tree(K, V) & t);
 
 forall(otype K | Comparable(K), otype V)
Index: src/tests/avltree/avl1.c
===================================================================
--- src/tests/avltree/avl1.c	(revision 142cf5d5bc4083f9bfbdb71d2ae41cf1ec930d79)
+++ src/tests/avltree/avl1.c	(revision 2afec66345a55139c8738d36411816676b2fe4d3)
@@ -3,19 +3,19 @@
 
 forall(otype K | Comparable(K), otype V)
-void ?{}(tree(K, V) *t, K key, V value){
-  (&t->key) { key };
-  (&t->value) { value };
-  t->parent = NULL;
-  t->left = NULL;
-  t->right = NULL;
-  t->balance = 0;
+void ?{}(tree(K, V) &t, K key, V value){
+  (t.key) { key };
+  (t.value) { value };
+  t.parent = NULL;
+  t.left = NULL;
+  t.right = NULL;
+  t.balance = 0;
 }
 
 forall(otype K, otype V)
-void ^?{}(tree(K, V) * t){
-  delete(t->left);
-  delete(t->right);
-  ^(&t->key){};
-  ^(&t->value){};
+void ^?{}(tree(K, V) & t){
+  delete(t.left);
+  delete(t.right);
+  ^(t.key){};
+  ^(t.value){};
 }
 
@@ -24,5 +24,5 @@
   // infinite loop trying to resolve ... t = malloc();
   tree(K, V) * t = malloc(sizeof(tree(K,V)));
-  t { key, value };
+  (*t){ key, value };
   return t;
 }
