diff --git a/include/grpc/support/avl.h b/include/grpc/support/avl.h
index ed052e822293f24d44b65aa6f87e378c3d87fa4a..d53ff5d9040dc8cdd7839e5746b549899e5d51ae 100644
--- a/include/grpc/support/avl.h
+++ b/include/grpc/support/avl.h
@@ -31,18 +31,23 @@ typedef struct gpr_avl_node {
   long height;
 } gpr_avl_node;
 
+/** vtable for the AVL tree
+ * The optional user_data is propagated from the top level gpr_avl_XXX API.
+ * From the same API call, multiple vtable functions may be called multiple
+ * times.
+ */
 typedef struct gpr_avl_vtable {
   /** destroy a key */
-  void (*destroy_key)(void *key);
+  void (*destroy_key)(void *key, void *user_data);
   /** copy a key, returning new value */
-  void *(*copy_key)(void *key);
+  void *(*copy_key)(void *key, void *user_data);
   /** compare key1, key2; return <0 if key1 < key2,
       >0 if key1 > key2, 0 if key1 == key2 */
-  long (*compare_keys)(void *key1, void *key2);
+  long (*compare_keys)(void *key1, void *key2, void *user_data);
   /** destroy a value */
-  void (*destroy_value)(void *value);
+  void (*destroy_value)(void *value, void *user_data);
   /** copy a value */
-  void *(*copy_value)(void *value);
+  void *(*copy_value)(void *value, void *user_data);
 } gpr_avl_vtable;
 
 /** "pointer" to an AVL tree - this is a reference
@@ -53,29 +58,36 @@ typedef struct gpr_avl {
   gpr_avl_node *root;
 } gpr_avl;
 
-/** create an immutable AVL tree */
+/** Create an immutable AVL tree. */
 GPRAPI gpr_avl gpr_avl_create(const gpr_avl_vtable *vtable);
-/** add a reference to an existing tree - returns
-    the tree as a convenience */
-GPRAPI gpr_avl gpr_avl_ref(gpr_avl avl);
-/** remove a reference to a tree - destroying it if there
-    are no references left */
-GPRAPI void gpr_avl_unref(gpr_avl avl);
-/** return a new tree with (key, value) added to avl.
+/** Add a reference to an existing tree - returns
+    the tree as a convenience. The optional user_data will be passed to vtable
+    functions. */
+GPRAPI gpr_avl gpr_avl_ref(gpr_avl avl, void *user_data);
+/** Remove a reference to a tree - destroying it if there
+    are no references left. The optional user_data will be passed to vtable
+    functions. */
+GPRAPI void gpr_avl_unref(gpr_avl avl, void *user_data);
+/** Return a new tree with (key, value) added to avl.
     implicitly unrefs avl to allow easy chaining.
     if key exists in avl, the new tree's key entry updated
-    (i.e. a duplicate is not created) */
-GPRAPI gpr_avl gpr_avl_add(gpr_avl avl, void *key, void *value);
-/** return a new tree with key deleted
-    implicitly unrefs avl to allow easy chaining. */
-GPRAPI gpr_avl gpr_avl_remove(gpr_avl avl, void *key);
-/** lookup key, and return the associated value.
-    does not mutate avl.
-    returns NULL if key is not found. */
-GPRAPI void *gpr_avl_get(gpr_avl avl, void *key);
+    (i.e. a duplicate is not created). The optional user_data will be passed to
+    vtable functions. */
+GPRAPI gpr_avl gpr_avl_add(gpr_avl avl, void *key, void *value,
+                           void *user_data);
+/** Return a new tree with key deleted
+    implicitly unrefs avl to allow easy chaining. The optional user_data will be
+    passed to vtable functions. */
+GPRAPI gpr_avl gpr_avl_remove(gpr_avl avl, void *key, void *user_data);
+/** Lookup key, and return the associated value.
+    Does not mutate avl.
+    Returns NULL if key is not found. The optional user_data will be passed to
+    vtable functions.*/
+GPRAPI void *gpr_avl_get(gpr_avl avl, void *key, void *user_data);
 /** Return 1 if avl contains key, 0 otherwise; if it has the key, sets *value to
-    its value*/
-GPRAPI int gpr_avl_maybe_get(gpr_avl avl, void *key, void **value);
+    its value. THe optional user_data will be passed to vtable functions. */
+GPRAPI int gpr_avl_maybe_get(gpr_avl avl, void *key, void **value,
+                             void *user_data);
 /** Return 1 if avl is empty, 0 otherwise */
 GPRAPI int gpr_avl_is_empty(gpr_avl avl);
 
diff --git a/src/core/ext/filters/client_channel/retry_throttle.c b/src/core/ext/filters/client_channel/retry_throttle.c
index 3009e21d4914300554cadfe26c23b27c39d56f92..0c7a3ae651954651e7f57edf87beb72ba76aa7df 100644
--- a/src/core/ext/filters/client_channel/retry_throttle.c
+++ b/src/core/ext/filters/client_channel/retry_throttle.c
@@ -130,24 +130,28 @@ static grpc_server_retry_throttle_data* grpc_server_retry_throttle_data_create(
 // avl vtable for string -> server_retry_throttle_data map
 //
 
-static void* copy_server_name(void* key) { return gpr_strdup(key); }
+static void* copy_server_name(void* key, void* unused) {
+  return gpr_strdup(key);
+}
 
-static long compare_server_name(void* key1, void* key2) {
+static long compare_server_name(void* key1, void* key2, void* unused) {
   return strcmp(key1, key2);
 }
 
-static void destroy_server_retry_throttle_data(void* value) {
+static void destroy_server_retry_throttle_data(void* value, void* unused) {
   grpc_server_retry_throttle_data* throttle_data = value;
   grpc_server_retry_throttle_data_unref(throttle_data);
 }
 
-static void* copy_server_retry_throttle_data(void* value) {
+static void* copy_server_retry_throttle_data(void* value, void* unused) {
   grpc_server_retry_throttle_data* throttle_data = value;
   return grpc_server_retry_throttle_data_ref(throttle_data);
 }
 
+static void destroy_server_name(void* key, void* unused) { gpr_free(key); }
+
 static const gpr_avl_vtable avl_vtable = {
-    gpr_free /* destroy_key */, copy_server_name, compare_server_name,
+    destroy_server_name, copy_server_name, compare_server_name,
     destroy_server_retry_throttle_data, copy_server_retry_throttle_data};
 
 //
@@ -164,19 +168,19 @@ void grpc_retry_throttle_map_init() {
 
 void grpc_retry_throttle_map_shutdown() {
   gpr_mu_destroy(&g_mu);
-  gpr_avl_unref(g_avl);
+  gpr_avl_unref(g_avl, NULL);
 }
 
 grpc_server_retry_throttle_data* grpc_retry_throttle_map_get_data_for_server(
     const char* server_name, int max_milli_tokens, int milli_token_ratio) {
   gpr_mu_lock(&g_mu);
   grpc_server_retry_throttle_data* throttle_data =
-      gpr_avl_get(g_avl, (char*)server_name);
+      gpr_avl_get(g_avl, (char*)server_name, NULL);
   if (throttle_data == NULL) {
     // Entry not found.  Create a new one.
     throttle_data = grpc_server_retry_throttle_data_create(
         max_milli_tokens, milli_token_ratio, NULL);
-    g_avl = gpr_avl_add(g_avl, (char*)server_name, throttle_data);
+    g_avl = gpr_avl_add(g_avl, (char*)server_name, throttle_data, NULL);
   } else {
     if (throttle_data->max_milli_tokens != max_milli_tokens ||
         throttle_data->milli_token_ratio != milli_token_ratio) {
@@ -184,7 +188,7 @@ grpc_server_retry_throttle_data* grpc_retry_throttle_map_get_data_for_server(
       // the original one.
       throttle_data = grpc_server_retry_throttle_data_create(
           max_milli_tokens, milli_token_ratio, throttle_data);
-      g_avl = gpr_avl_add(g_avl, (char*)server_name, throttle_data);
+      g_avl = gpr_avl_add(g_avl, (char*)server_name, throttle_data, NULL);
     } else {
       // Entry found.  Increase refcount.
       grpc_server_retry_throttle_data_ref(throttle_data);
diff --git a/src/core/ext/filters/client_channel/subchannel_index.c b/src/core/ext/filters/client_channel/subchannel_index.c
index a33ab950bffa7f8784c76faf13df85be5ded87d0..ababd05d8426a0f6001ff87de35276463f9b4d43 100644
--- a/src/core/ext/filters/client_channel/subchannel_index.c
+++ b/src/core/ext/filters/client_channel/subchannel_index.c
@@ -38,26 +38,8 @@ struct grpc_subchannel_key {
   grpc_subchannel_args args;
 };
 
-GPR_TLS_DECL(subchannel_index_exec_ctx);
-
 static bool g_force_creation = false;
 
-static void enter_ctx(grpc_exec_ctx *exec_ctx) {
-  GPR_ASSERT(gpr_tls_get(&subchannel_index_exec_ctx) == 0);
-  gpr_tls_set(&subchannel_index_exec_ctx, (intptr_t)exec_ctx);
-}
-
-static void leave_ctx(grpc_exec_ctx *exec_ctx) {
-  GPR_ASSERT(gpr_tls_get(&subchannel_index_exec_ctx) == (intptr_t)exec_ctx);
-  gpr_tls_set(&subchannel_index_exec_ctx, 0);
-}
-
-static grpc_exec_ctx *current_ctx() {
-  grpc_exec_ctx *c = (grpc_exec_ctx *)gpr_tls_get(&subchannel_index_exec_ctx);
-  GPR_ASSERT(c != NULL);
-  return c;
-}
-
 static grpc_subchannel_key *create_key(
     const grpc_subchannel_args *args,
     grpc_channel_args *(*copy_channel_args)(const grpc_channel_args *args)) {
@@ -104,21 +86,25 @@ void grpc_subchannel_key_destroy(grpc_exec_ctx *exec_ctx,
   gpr_free(k);
 }
 
-static void sck_avl_destroy(void *p) {
-  grpc_subchannel_key_destroy(current_ctx(), p);
+static void sck_avl_destroy(void *p, void *user_data) {
+  grpc_exec_ctx *exec_ctx = (grpc_exec_ctx *)user_data;
+  grpc_subchannel_key_destroy(exec_ctx, p);
 }
 
-static void *sck_avl_copy(void *p) { return subchannel_key_copy(p); }
+static void *sck_avl_copy(void *p, void *unused) {
+  return subchannel_key_copy(p);
+}
 
-static long sck_avl_compare(void *a, void *b) {
+static long sck_avl_compare(void *a, void *b, void *unused) {
   return grpc_subchannel_key_compare(a, b);
 }
 
-static void scv_avl_destroy(void *p) {
-  GRPC_SUBCHANNEL_WEAK_UNREF(current_ctx(), p, "subchannel_index");
+static void scv_avl_destroy(void *p, void *user_data) {
+  grpc_exec_ctx *exec_ctx = (grpc_exec_ctx *)user_data;
+  GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, p, "subchannel_index");
 }
 
-static void *scv_avl_copy(void *p) {
+static void *scv_avl_copy(void *p, void *unused) {
   GRPC_SUBCHANNEL_WEAK_REF(p, "subchannel_index");
   return p;
 }
@@ -133,38 +119,33 @@ static const gpr_avl_vtable subchannel_avl_vtable = {
 void grpc_subchannel_index_init(void) {
   g_subchannel_index = gpr_avl_create(&subchannel_avl_vtable);
   gpr_mu_init(&g_mu);
-  gpr_tls_init(&subchannel_index_exec_ctx);
 }
 
 void grpc_subchannel_index_shutdown(void) {
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   gpr_mu_destroy(&g_mu);
-  gpr_avl_unref(g_subchannel_index);
-  gpr_tls_destroy(&subchannel_index_exec_ctx);
+  gpr_avl_unref(g_subchannel_index, &exec_ctx);
+  grpc_exec_ctx_finish(&exec_ctx);
 }
 
 grpc_subchannel *grpc_subchannel_index_find(grpc_exec_ctx *exec_ctx,
                                             grpc_subchannel_key *key) {
-  enter_ctx(exec_ctx);
-
   // Lock, and take a reference to the subchannel index.
   // We don't need to do the search under a lock as avl's are immutable.
   gpr_mu_lock(&g_mu);
-  gpr_avl index = gpr_avl_ref(g_subchannel_index);
+  gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx);
   gpr_mu_unlock(&g_mu);
 
-  grpc_subchannel *c =
-      GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(gpr_avl_get(index, key), "index_find");
-  gpr_avl_unref(index);
+  grpc_subchannel *c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(
+      gpr_avl_get(index, key, exec_ctx), "index_find");
+  gpr_avl_unref(index, exec_ctx);
 
-  leave_ctx(exec_ctx);
   return c;
 }
 
 grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx,
                                                 grpc_subchannel_key *key,
                                                 grpc_subchannel *constructed) {
-  enter_ctx(exec_ctx);
-
   grpc_subchannel *c = NULL;
   bool need_to_unref_constructed;
 
@@ -174,11 +155,11 @@ grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx,
     // Compare and swap loop:
     // - take a reference to the current index
     gpr_mu_lock(&g_mu);
-    gpr_avl index = gpr_avl_ref(g_subchannel_index);
+    gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx);
     gpr_mu_unlock(&g_mu);
 
     // - Check to see if a subchannel already exists
-    c = gpr_avl_get(index, key);
+    c = gpr_avl_get(index, key, exec_ctx);
     if (c != NULL) {
       c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(c, "index_register");
     }
@@ -187,9 +168,9 @@ grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx,
       need_to_unref_constructed = true;
     } else {
       // no -> update the avl and compare/swap
-      gpr_avl updated =
-          gpr_avl_add(gpr_avl_ref(index), subchannel_key_copy(key),
-                      GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"));
+      gpr_avl updated = gpr_avl_add(
+          gpr_avl_ref(index, exec_ctx), subchannel_key_copy(key),
+          GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"), exec_ctx);
 
       // it may happen (but it's expected to be unlikely)
       // that some other thread has changed the index:
@@ -201,13 +182,11 @@ grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx,
       }
       gpr_mu_unlock(&g_mu);
 
-      gpr_avl_unref(updated);
+      gpr_avl_unref(updated, exec_ctx);
     }
-    gpr_avl_unref(index);
+    gpr_avl_unref(index, exec_ctx);
   }
 
-  leave_ctx(exec_ctx);
-
   if (need_to_unref_constructed) {
     GRPC_SUBCHANNEL_UNREF(exec_ctx, constructed, "index_register");
   }
@@ -218,27 +197,26 @@ grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx,
 void grpc_subchannel_index_unregister(grpc_exec_ctx *exec_ctx,
                                       grpc_subchannel_key *key,
                                       grpc_subchannel *constructed) {
-  enter_ctx(exec_ctx);
-
   bool done = false;
   while (!done) {
     // Compare and swap loop:
     // - take a reference to the current index
     gpr_mu_lock(&g_mu);
-    gpr_avl index = gpr_avl_ref(g_subchannel_index);
+    gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx);
     gpr_mu_unlock(&g_mu);
 
     // Check to see if this key still refers to the previously
     // registered subchannel
-    grpc_subchannel *c = gpr_avl_get(index, key);
+    grpc_subchannel *c = gpr_avl_get(index, key, exec_ctx);
     if (c != constructed) {
-      gpr_avl_unref(index);
+      gpr_avl_unref(index, exec_ctx);
       break;
     }
 
     // compare and swap the update (some other thread may have
     // mutated the index behind us)
-    gpr_avl updated = gpr_avl_remove(gpr_avl_ref(index), key);
+    gpr_avl updated =
+        gpr_avl_remove(gpr_avl_ref(index, exec_ctx), key, exec_ctx);
 
     gpr_mu_lock(&g_mu);
     if (index.root == g_subchannel_index.root) {
@@ -247,11 +225,9 @@ void grpc_subchannel_index_unregister(grpc_exec_ctx *exec_ctx,
     }
     gpr_mu_unlock(&g_mu);
 
-    gpr_avl_unref(updated);
-    gpr_avl_unref(index);
+    gpr_avl_unref(updated, exec_ctx);
+    gpr_avl_unref(index, exec_ctx);
   }
-
-  leave_ctx(exec_ctx);
 }
 
 void grpc_subchannel_index_test_only_set_force_creation(bool force_creation) {
diff --git a/src/core/lib/support/avl.c b/src/core/lib/support/avl.c
index a6178fdbcedcfaed09e9d7a45ce36b867cef9d17..0e28b24c98ef19b5d040dc7f9f981d21516292e1 100644
--- a/src/core/lib/support/avl.c
+++ b/src/core/lib/support/avl.c
@@ -39,15 +39,16 @@ static gpr_avl_node *ref_node(gpr_avl_node *node) {
   return node;
 }
 
-static void unref_node(const gpr_avl_vtable *vtable, gpr_avl_node *node) {
+static void unref_node(const gpr_avl_vtable *vtable, gpr_avl_node *node,
+                       void *user_data) {
   if (node == NULL) {
     return;
   }
   if (gpr_unref(&node->refs)) {
-    vtable->destroy_key(node->key);
-    vtable->destroy_value(node->value);
-    unref_node(vtable, node->left);
-    unref_node(vtable, node->right);
+    vtable->destroy_key(node->key, user_data);
+    vtable->destroy_value(node->value, user_data);
+    unref_node(vtable, node->left, user_data);
+    unref_node(vtable, node->right, user_data);
     gpr_free(node);
   }
 }
@@ -87,30 +88,30 @@ gpr_avl_node *new_node(void *key, void *value, gpr_avl_node *left,
 }
 
 static gpr_avl_node *get(const gpr_avl_vtable *vtable, gpr_avl_node *node,
-                         void *key) {
+                         void *key, void *user_data) {
   long cmp;
 
   if (node == NULL) {
     return NULL;
   }
 
-  cmp = vtable->compare_keys(node->key, key);
+  cmp = vtable->compare_keys(node->key, key, user_data);
   if (cmp == 0) {
     return node;
   } else if (cmp > 0) {
-    return get(vtable, node->left, key);
+    return get(vtable, node->left, key, user_data);
   } else {
-    return get(vtable, node->right, key);
+    return get(vtable, node->right, key, user_data);
   }
 }
 
-void *gpr_avl_get(gpr_avl avl, void *key) {
-  gpr_avl_node *node = get(avl.vtable, avl.root, key);
+void *gpr_avl_get(gpr_avl avl, void *key, void *user_data) {
+  gpr_avl_node *node = get(avl.vtable, avl.root, key, user_data);
   return node ? node->value : NULL;
 }
 
-int gpr_avl_maybe_get(gpr_avl avl, void *key, void **value) {
-  gpr_avl_node *node = get(avl.vtable, avl.root, key);
+int gpr_avl_maybe_get(gpr_avl avl, void *key, void **value, void *user_data) {
+  gpr_avl_node *node = get(avl.vtable, avl.root, key, user_data);
   if (node != NULL) {
     *value = node->value;
     return 1;
@@ -120,70 +121,75 @@ int gpr_avl_maybe_get(gpr_avl avl, void *key, void **value) {
 
 static gpr_avl_node *rotate_left(const gpr_avl_vtable *vtable, void *key,
                                  void *value, gpr_avl_node *left,
-                                 gpr_avl_node *right) {
-  gpr_avl_node *n =
-      new_node(vtable->copy_key(right->key), vtable->copy_value(right->value),
-               new_node(key, value, left, ref_node(right->left)),
-               ref_node(right->right));
-  unref_node(vtable, right);
+                                 gpr_avl_node *right, void *user_data) {
+  gpr_avl_node *n = new_node(vtable->copy_key(right->key, user_data),
+                             vtable->copy_value(right->value, user_data),
+                             new_node(key, value, left, ref_node(right->left)),
+                             ref_node(right->right));
+  unref_node(vtable, right, user_data);
   return n;
 }
 
 static gpr_avl_node *rotate_right(const gpr_avl_vtable *vtable, void *key,
                                   void *value, gpr_avl_node *left,
-                                  gpr_avl_node *right) {
-  gpr_avl_node *n = new_node(
-      vtable->copy_key(left->key), vtable->copy_value(left->value),
-      ref_node(left->left), new_node(key, value, ref_node(left->right), right));
-  unref_node(vtable, left);
+                                  gpr_avl_node *right, void *user_data) {
+  gpr_avl_node *n =
+      new_node(vtable->copy_key(left->key, user_data),
+               vtable->copy_value(left->value, user_data), ref_node(left->left),
+               new_node(key, value, ref_node(left->right), right));
+  unref_node(vtable, left, user_data);
   return n;
 }
 
 static gpr_avl_node *rotate_left_right(const gpr_avl_vtable *vtable, void *key,
                                        void *value, gpr_avl_node *left,
-                                       gpr_avl_node *right) {
+                                       gpr_avl_node *right, void *user_data) {
   /* rotate_right(..., rotate_left(left), right) */
-  gpr_avl_node *n = new_node(
-      vtable->copy_key(left->right->key),
-      vtable->copy_value(left->right->value),
-      new_node(vtable->copy_key(left->key), vtable->copy_value(left->value),
-               ref_node(left->left), ref_node(left->right->left)),
-      new_node(key, value, ref_node(left->right->right), right));
-  unref_node(vtable, left);
+  gpr_avl_node *n =
+      new_node(vtable->copy_key(left->right->key, user_data),
+               vtable->copy_value(left->right->value, user_data),
+               new_node(vtable->copy_key(left->key, user_data),
+                        vtable->copy_value(left->value, user_data),
+                        ref_node(left->left), ref_node(left->right->left)),
+               new_node(key, value, ref_node(left->right->right), right));
+  unref_node(vtable, left, user_data);
   return n;
 }
 
 static gpr_avl_node *rotate_right_left(const gpr_avl_vtable *vtable, void *key,
                                        void *value, gpr_avl_node *left,
-                                       gpr_avl_node *right) {
+                                       gpr_avl_node *right, void *user_data) {
   /* rotate_left(..., left, rotate_right(right)) */
-  gpr_avl_node *n = new_node(
-      vtable->copy_key(right->left->key),
-      vtable->copy_value(right->left->value),
-      new_node(key, value, left, ref_node(right->left->left)),
-      new_node(vtable->copy_key(right->key), vtable->copy_value(right->value),
-               ref_node(right->left->right), ref_node(right->right)));
-  unref_node(vtable, right);
+  gpr_avl_node *n =
+      new_node(vtable->copy_key(right->left->key, user_data),
+               vtable->copy_value(right->left->value, user_data),
+               new_node(key, value, left, ref_node(right->left->left)),
+               new_node(vtable->copy_key(right->key, user_data),
+                        vtable->copy_value(right->value, user_data),
+                        ref_node(right->left->right), ref_node(right->right)));
+  unref_node(vtable, right, user_data);
   return n;
 }
 
 static gpr_avl_node *rebalance(const gpr_avl_vtable *vtable, void *key,
                                void *value, gpr_avl_node *left,
-                               gpr_avl_node *right) {
+                               gpr_avl_node *right, void *user_data) {
   switch (node_height(left) - node_height(right)) {
     case 2:
       if (node_height(left->left) - node_height(left->right) == -1) {
         return assert_invariants(
-            rotate_left_right(vtable, key, value, left, right));
+            rotate_left_right(vtable, key, value, left, right, user_data));
       } else {
-        return assert_invariants(rotate_right(vtable, key, value, left, right));
+        return assert_invariants(
+            rotate_right(vtable, key, value, left, right, user_data));
       }
     case -2:
       if (node_height(right->left) - node_height(right->right) == 1) {
         return assert_invariants(
-            rotate_right_left(vtable, key, value, left, right));
+            rotate_right_left(vtable, key, value, left, right, user_data));
       } else {
-        return assert_invariants(rotate_left(vtable, key, value, left, right));
+        return assert_invariants(
+            rotate_left(vtable, key, value, left, right, user_data));
       }
     default:
       return assert_invariants(new_node(key, value, left, right));
@@ -191,30 +197,32 @@ static gpr_avl_node *rebalance(const gpr_avl_vtable *vtable, void *key,
 }
 
 static gpr_avl_node *add_key(const gpr_avl_vtable *vtable, gpr_avl_node *node,
-                             void *key, void *value) {
+                             void *key, void *value, void *user_data) {
   long cmp;
   if (node == NULL) {
     return new_node(key, value, NULL, NULL);
   }
-  cmp = vtable->compare_keys(node->key, key);
+  cmp = vtable->compare_keys(node->key, key, user_data);
   if (cmp == 0) {
     return new_node(key, value, ref_node(node->left), ref_node(node->right));
   } else if (cmp > 0) {
-    return rebalance(
-        vtable, vtable->copy_key(node->key), vtable->copy_value(node->value),
-        add_key(vtable, node->left, key, value), ref_node(node->right));
+    return rebalance(vtable, vtable->copy_key(node->key, user_data),
+                     vtable->copy_value(node->value, user_data),
+                     add_key(vtable, node->left, key, value, user_data),
+                     ref_node(node->right), user_data);
   } else {
-    return rebalance(vtable, vtable->copy_key(node->key),
-                     vtable->copy_value(node->value), ref_node(node->left),
-                     add_key(vtable, node->right, key, value));
+    return rebalance(
+        vtable, vtable->copy_key(node->key, user_data),
+        vtable->copy_value(node->value, user_data), ref_node(node->left),
+        add_key(vtable, node->right, key, value, user_data), user_data);
   }
 }
 
-gpr_avl gpr_avl_add(gpr_avl avl, void *key, void *value) {
+gpr_avl gpr_avl_add(gpr_avl avl, void *key, void *value, void *user_data) {
   gpr_avl_node *old_root = avl.root;
-  avl.root = add_key(avl.vtable, avl.root, key, value);
+  avl.root = add_key(avl.vtable, avl.root, key, value, user_data);
   assert_invariants(avl.root);
-  unref_node(avl.vtable, old_root);
+  unref_node(avl.vtable, old_root, user_data);
   return avl;
 }
 
@@ -233,12 +241,13 @@ static gpr_avl_node *in_order_tail(gpr_avl_node *node) {
 }
 
 static gpr_avl_node *remove_key(const gpr_avl_vtable *vtable,
-                                gpr_avl_node *node, void *key) {
+                                gpr_avl_node *node, void *key,
+                                void *user_data) {
   long cmp;
   if (node == NULL) {
     return NULL;
   }
-  cmp = vtable->compare_keys(node->key, key);
+  cmp = vtable->compare_keys(node->key, key, user_data);
   if (cmp == 0) {
     if (node->left == NULL) {
       return ref_node(node->right);
@@ -246,39 +255,45 @@ static gpr_avl_node *remove_key(const gpr_avl_vtable *vtable,
       return ref_node(node->left);
     } else if (node->left->height < node->right->height) {
       gpr_avl_node *h = in_order_head(node->right);
-      return rebalance(vtable, vtable->copy_key(h->key),
-                       vtable->copy_value(h->value), ref_node(node->left),
-                       remove_key(vtable, node->right, h->key));
+      return rebalance(
+          vtable, vtable->copy_key(h->key, user_data),
+          vtable->copy_value(h->value, user_data), ref_node(node->left),
+          remove_key(vtable, node->right, h->key, user_data), user_data);
     } else {
       gpr_avl_node *h = in_order_tail(node->left);
-      return rebalance(
-          vtable, vtable->copy_key(h->key), vtable->copy_value(h->value),
-          remove_key(vtable, node->left, h->key), ref_node(node->right));
+      return rebalance(vtable, vtable->copy_key(h->key, user_data),
+                       vtable->copy_value(h->value, user_data),
+                       remove_key(vtable, node->left, h->key, user_data),
+                       ref_node(node->right), user_data);
     }
   } else if (cmp > 0) {
-    return rebalance(
-        vtable, vtable->copy_key(node->key), vtable->copy_value(node->value),
-        remove_key(vtable, node->left, key), ref_node(node->right));
+    return rebalance(vtable, vtable->copy_key(node->key, user_data),
+                     vtable->copy_value(node->value, user_data),
+                     remove_key(vtable, node->left, key, user_data),
+                     ref_node(node->right), user_data);
   } else {
-    return rebalance(vtable, vtable->copy_key(node->key),
-                     vtable->copy_value(node->value), ref_node(node->left),
-                     remove_key(vtable, node->right, key));
+    return rebalance(
+        vtable, vtable->copy_key(node->key, user_data),
+        vtable->copy_value(node->value, user_data), ref_node(node->left),
+        remove_key(vtable, node->right, key, user_data), user_data);
   }
 }
 
-gpr_avl gpr_avl_remove(gpr_avl avl, void *key) {
+gpr_avl gpr_avl_remove(gpr_avl avl, void *key, void *user_data) {
   gpr_avl_node *old_root = avl.root;
-  avl.root = remove_key(avl.vtable, avl.root, key);
+  avl.root = remove_key(avl.vtable, avl.root, key, user_data);
   assert_invariants(avl.root);
-  unref_node(avl.vtable, old_root);
+  unref_node(avl.vtable, old_root, user_data);
   return avl;
 }
 
-gpr_avl gpr_avl_ref(gpr_avl avl) {
+gpr_avl gpr_avl_ref(gpr_avl avl, void *user_data) {
   ref_node(avl.root);
   return avl;
 }
 
-void gpr_avl_unref(gpr_avl avl) { unref_node(avl.vtable, avl.root); }
+void gpr_avl_unref(gpr_avl avl, void *user_data) {
+  unref_node(avl.vtable, avl.root, user_data);
+}
 
 int gpr_avl_is_empty(gpr_avl avl) { return avl.root == NULL; }
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index a477ab6507394c84d37462c89455a687bd275128..528870435022162c7a6e06a68176c99f571b0e48 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -644,22 +644,22 @@ extern gpr_get_allocation_functions_type gpr_get_allocation_functions_import;
 typedef gpr_avl(*gpr_avl_create_type)(const gpr_avl_vtable *vtable);
 extern gpr_avl_create_type gpr_avl_create_import;
 #define gpr_avl_create gpr_avl_create_import
-typedef gpr_avl(*gpr_avl_ref_type)(gpr_avl avl);
+typedef gpr_avl(*gpr_avl_ref_type)(gpr_avl avl, void *user_data);
 extern gpr_avl_ref_type gpr_avl_ref_import;
 #define gpr_avl_ref gpr_avl_ref_import
-typedef void(*gpr_avl_unref_type)(gpr_avl avl);
+typedef void(*gpr_avl_unref_type)(gpr_avl avl, void *user_data);
 extern gpr_avl_unref_type gpr_avl_unref_import;
 #define gpr_avl_unref gpr_avl_unref_import
-typedef gpr_avl(*gpr_avl_add_type)(gpr_avl avl, void *key, void *value);
+typedef gpr_avl(*gpr_avl_add_type)(gpr_avl avl, void *key, void *value, void *user_data);
 extern gpr_avl_add_type gpr_avl_add_import;
 #define gpr_avl_add gpr_avl_add_import
-typedef gpr_avl(*gpr_avl_remove_type)(gpr_avl avl, void *key);
+typedef gpr_avl(*gpr_avl_remove_type)(gpr_avl avl, void *key, void *user_data);
 extern gpr_avl_remove_type gpr_avl_remove_import;
 #define gpr_avl_remove gpr_avl_remove_import
-typedef void *(*gpr_avl_get_type)(gpr_avl avl, void *key);
+typedef void *(*gpr_avl_get_type)(gpr_avl avl, void *key, void *user_data);
 extern gpr_avl_get_type gpr_avl_get_import;
 #define gpr_avl_get gpr_avl_get_import
-typedef int(*gpr_avl_maybe_get_type)(gpr_avl avl, void *key, void **value);
+typedef int(*gpr_avl_maybe_get_type)(gpr_avl avl, void *key, void **value, void *user_data);
 extern gpr_avl_maybe_get_type gpr_avl_maybe_get_import;
 #define gpr_avl_maybe_get gpr_avl_maybe_get_import
 typedef int(*gpr_avl_is_empty_type)(gpr_avl avl);
diff --git a/test/core/support/avl_test.c b/test/core/support/avl_test.c
index cd352d3d1d67251e5605b3454131d7240d676023..37424d6405739b83cd9c72e10a21e35abdf4102a 100644
--- a/test/core/support/avl_test.c
+++ b/test/core/support/avl_test.c
@@ -33,29 +33,31 @@ static int *box(int x) {
   return b;
 }
 
-static long int_compare(void *int1, void *int2) {
+static long int_compare(void *int1, void *int2, void *unused) {
   return (*(int *)int1) - (*(int *)int2);
 }
-static void *int_copy(void *p) { return box(*(int *)p); }
+static void *int_copy(void *p, void *unused) { return box(*(int *)p); }
 
-static const gpr_avl_vtable int_int_vtable = {gpr_free, int_copy, int_compare,
-                                              gpr_free, int_copy};
+static void destroy(void *p, void *unused) { gpr_free(p); }
+
+static const gpr_avl_vtable int_int_vtable = {destroy, int_copy, int_compare,
+                                              destroy, int_copy};
 
 static void check_get(gpr_avl avl, int key, int value) {
   int *k = box(key);
-  GPR_ASSERT(*(int *)gpr_avl_get(avl, k) == value);
+  GPR_ASSERT(*(int *)gpr_avl_get(avl, k, NULL) == value);
   gpr_free(k);
 }
 
 static void check_negget(gpr_avl avl, int key) {
   int *k = box(key);
-  GPR_ASSERT(gpr_avl_get(avl, k) == NULL);
+  GPR_ASSERT(gpr_avl_get(avl, k, NULL) == NULL);
   gpr_free(k);
 }
 
 static gpr_avl remove_int(gpr_avl avl, int key) {
   int *k = box(key);
-  avl = gpr_avl_remove(avl, k);
+  avl = gpr_avl_remove(avl, k, NULL);
   gpr_free(k);
   return avl;
 }
@@ -64,94 +66,94 @@ static void test_get(void) {
   gpr_avl avl;
   gpr_log(GPR_DEBUG, "test_get");
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(1), box(11));
-  avl = gpr_avl_add(avl, box(2), box(22));
-  avl = gpr_avl_add(avl, box(3), box(33));
+  avl = gpr_avl_add(avl, box(1), box(11), NULL);
+  avl = gpr_avl_add(avl, box(2), box(22), NULL);
+  avl = gpr_avl_add(avl, box(3), box(33), NULL);
   check_get(avl, 1, 11);
   check_get(avl, 2, 22);
   check_get(avl, 3, 33);
   check_negget(avl, 4);
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_ll(void) {
   gpr_avl avl;
   gpr_log(GPR_DEBUG, "test_ll");
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(5), box(1));
-  avl = gpr_avl_add(avl, box(4), box(2));
-  avl = gpr_avl_add(avl, box(3), box(3));
+  avl = gpr_avl_add(avl, box(5), box(1), NULL);
+  avl = gpr_avl_add(avl, box(4), box(2), NULL);
+  avl = gpr_avl_add(avl, box(3), box(3), NULL);
   GPR_ASSERT(*(int *)avl.root->key == 4);
   GPR_ASSERT(*(int *)avl.root->left->key == 3);
   GPR_ASSERT(*(int *)avl.root->right->key == 5);
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_lr(void) {
   gpr_avl avl;
   gpr_log(GPR_DEBUG, "test_lr");
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(5), box(1));
-  avl = gpr_avl_add(avl, box(3), box(2));
-  avl = gpr_avl_add(avl, box(4), box(3));
+  avl = gpr_avl_add(avl, box(5), box(1), NULL);
+  avl = gpr_avl_add(avl, box(3), box(2), NULL);
+  avl = gpr_avl_add(avl, box(4), box(3), NULL);
   GPR_ASSERT(*(int *)avl.root->key == 4);
   GPR_ASSERT(*(int *)avl.root->left->key == 3);
   GPR_ASSERT(*(int *)avl.root->right->key == 5);
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_rr(void) {
   gpr_avl avl;
   gpr_log(GPR_DEBUG, "test_rr");
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(3), box(1));
-  avl = gpr_avl_add(avl, box(4), box(2));
-  avl = gpr_avl_add(avl, box(5), box(3));
+  avl = gpr_avl_add(avl, box(3), box(1), NULL);
+  avl = gpr_avl_add(avl, box(4), box(2), NULL);
+  avl = gpr_avl_add(avl, box(5), box(3), NULL);
   GPR_ASSERT(*(int *)avl.root->key == 4);
   GPR_ASSERT(*(int *)avl.root->left->key == 3);
   GPR_ASSERT(*(int *)avl.root->right->key == 5);
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_rl(void) {
   gpr_avl avl;
   gpr_log(GPR_DEBUG, "test_rl");
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(3), box(1));
-  avl = gpr_avl_add(avl, box(5), box(2));
-  avl = gpr_avl_add(avl, box(4), box(3));
+  avl = gpr_avl_add(avl, box(3), box(1), NULL);
+  avl = gpr_avl_add(avl, box(5), box(2), NULL);
+  avl = gpr_avl_add(avl, box(4), box(3), NULL);
   GPR_ASSERT(*(int *)avl.root->key == 4);
   GPR_ASSERT(*(int *)avl.root->left->key == 3);
   GPR_ASSERT(*(int *)avl.root->right->key == 5);
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_unbalanced(void) {
   gpr_avl avl;
   gpr_log(GPR_DEBUG, "test_unbalanced");
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(5), box(1));
-  avl = gpr_avl_add(avl, box(4), box(2));
-  avl = gpr_avl_add(avl, box(3), box(3));
-  avl = gpr_avl_add(avl, box(2), box(4));
-  avl = gpr_avl_add(avl, box(1), box(5));
+  avl = gpr_avl_add(avl, box(5), box(1), NULL);
+  avl = gpr_avl_add(avl, box(4), box(2), NULL);
+  avl = gpr_avl_add(avl, box(3), box(3), NULL);
+  avl = gpr_avl_add(avl, box(2), box(4), NULL);
+  avl = gpr_avl_add(avl, box(1), box(5), NULL);
   GPR_ASSERT(*(int *)avl.root->key == 4);
   GPR_ASSERT(*(int *)avl.root->left->key == 2);
   GPR_ASSERT(*(int *)avl.root->left->left->key == 1);
   GPR_ASSERT(*(int *)avl.root->left->right->key == 3);
   GPR_ASSERT(*(int *)avl.root->right->key == 5);
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_replace(void) {
   gpr_avl avl;
   gpr_log(GPR_DEBUG, "test_replace");
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(1), box(1));
-  avl = gpr_avl_add(avl, box(1), box(2));
+  avl = gpr_avl_add(avl, box(1), box(1), NULL);
+  avl = gpr_avl_add(avl, box(1), box(2), NULL);
   check_get(avl, 1, 2);
   check_negget(avl, 2);
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_remove(void) {
@@ -159,36 +161,36 @@ static void test_remove(void) {
   gpr_avl avl3, avl4, avl5, avln;
   gpr_log(GPR_DEBUG, "test_remove");
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(3), box(1));
-  avl = gpr_avl_add(avl, box(4), box(2));
-  avl = gpr_avl_add(avl, box(5), box(3));
+  avl = gpr_avl_add(avl, box(3), box(1), NULL);
+  avl = gpr_avl_add(avl, box(4), box(2), NULL);
+  avl = gpr_avl_add(avl, box(5), box(3), NULL);
 
-  avl3 = remove_int(gpr_avl_ref(avl), 3);
-  avl4 = remove_int(gpr_avl_ref(avl), 4);
-  avl5 = remove_int(gpr_avl_ref(avl), 5);
-  avln = remove_int(gpr_avl_ref(avl), 1);
+  avl3 = remove_int(gpr_avl_ref(avl, NULL), 3);
+  avl4 = remove_int(gpr_avl_ref(avl, NULL), 4);
+  avl5 = remove_int(gpr_avl_ref(avl, NULL), 5);
+  avln = remove_int(gpr_avl_ref(avl, NULL), 1);
 
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 
   check_negget(avl3, 3);
   check_get(avl3, 4, 2);
   check_get(avl3, 5, 3);
-  gpr_avl_unref(avl3);
+  gpr_avl_unref(avl3, NULL);
 
   check_get(avl4, 3, 1);
   check_negget(avl4, 4);
   check_get(avl4, 5, 3);
-  gpr_avl_unref(avl4);
+  gpr_avl_unref(avl4, NULL);
 
   check_get(avl5, 3, 1);
   check_get(avl5, 4, 2);
   check_negget(avl5, 5);
-  gpr_avl_unref(avl5);
+  gpr_avl_unref(avl5, NULL);
 
   check_get(avln, 3, 1);
   check_get(avln, 4, 2);
   check_get(avln, 5, 3);
-  gpr_avl_unref(avln);
+  gpr_avl_unref(avln, NULL);
 }
 
 static void test_badcase1(void) {
@@ -197,44 +199,44 @@ static void test_badcase1(void) {
   gpr_log(GPR_DEBUG, "test_badcase1");
 
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(88), box(1));
+  avl = gpr_avl_add(avl, box(88), box(1), NULL);
   avl = remove_int(avl, 643);
   avl = remove_int(avl, 983);
-  avl = gpr_avl_add(avl, box(985), box(4));
-  avl = gpr_avl_add(avl, box(640), box(5));
-  avl = gpr_avl_add(avl, box(41), box(6));
-  avl = gpr_avl_add(avl, box(112), box(7));
-  avl = gpr_avl_add(avl, box(342), box(8));
+  avl = gpr_avl_add(avl, box(985), box(4), NULL);
+  avl = gpr_avl_add(avl, box(640), box(5), NULL);
+  avl = gpr_avl_add(avl, box(41), box(6), NULL);
+  avl = gpr_avl_add(avl, box(112), box(7), NULL);
+  avl = gpr_avl_add(avl, box(342), box(8), NULL);
   avl = remove_int(avl, 1013);
-  avl = gpr_avl_add(avl, box(434), box(10));
-  avl = gpr_avl_add(avl, box(520), box(11));
-  avl = gpr_avl_add(avl, box(231), box(12));
-  avl = gpr_avl_add(avl, box(852), box(13));
+  avl = gpr_avl_add(avl, box(434), box(10), NULL);
+  avl = gpr_avl_add(avl, box(520), box(11), NULL);
+  avl = gpr_avl_add(avl, box(231), box(12), NULL);
+  avl = gpr_avl_add(avl, box(852), box(13), NULL);
   avl = remove_int(avl, 461);
-  avl = gpr_avl_add(avl, box(108), box(15));
-  avl = gpr_avl_add(avl, box(806), box(16));
-  avl = gpr_avl_add(avl, box(827), box(17));
+  avl = gpr_avl_add(avl, box(108), box(15), NULL);
+  avl = gpr_avl_add(avl, box(806), box(16), NULL);
+  avl = gpr_avl_add(avl, box(827), box(17), NULL);
   avl = remove_int(avl, 796);
-  avl = gpr_avl_add(avl, box(340), box(19));
-  avl = gpr_avl_add(avl, box(498), box(20));
-  avl = gpr_avl_add(avl, box(203), box(21));
-  avl = gpr_avl_add(avl, box(751), box(22));
-  avl = gpr_avl_add(avl, box(150), box(23));
+  avl = gpr_avl_add(avl, box(340), box(19), NULL);
+  avl = gpr_avl_add(avl, box(498), box(20), NULL);
+  avl = gpr_avl_add(avl, box(203), box(21), NULL);
+  avl = gpr_avl_add(avl, box(751), box(22), NULL);
+  avl = gpr_avl_add(avl, box(150), box(23), NULL);
   avl = remove_int(avl, 237);
-  avl = gpr_avl_add(avl, box(830), box(25));
+  avl = gpr_avl_add(avl, box(830), box(25), NULL);
   avl = remove_int(avl, 1007);
   avl = remove_int(avl, 394);
-  avl = gpr_avl_add(avl, box(65), box(28));
+  avl = gpr_avl_add(avl, box(65), box(28), NULL);
   avl = remove_int(avl, 904);
   avl = remove_int(avl, 123);
-  avl = gpr_avl_add(avl, box(238), box(31));
-  avl = gpr_avl_add(avl, box(184), box(32));
+  avl = gpr_avl_add(avl, box(238), box(31), NULL);
+  avl = gpr_avl_add(avl, box(184), box(32), NULL);
   avl = remove_int(avl, 331);
-  avl = gpr_avl_add(avl, box(827), box(34));
+  avl = gpr_avl_add(avl, box(827), box(34), NULL);
 
   check_get(avl, 830, 25);
 
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_badcase2(void) {
@@ -243,254 +245,254 @@ static void test_badcase2(void) {
   gpr_log(GPR_DEBUG, "test_badcase2");
 
   avl = gpr_avl_create(&int_int_vtable);
-  avl = gpr_avl_add(avl, box(288), box(1));
+  avl = gpr_avl_add(avl, box(288), box(1), NULL);
   avl = remove_int(avl, 415);
-  avl = gpr_avl_add(avl, box(953), box(3));
-  avl = gpr_avl_add(avl, box(101), box(4));
-  avl = gpr_avl_add(avl, box(516), box(5));
-  avl = gpr_avl_add(avl, box(547), box(6));
-  avl = gpr_avl_add(avl, box(467), box(7));
-  avl = gpr_avl_add(avl, box(793), box(8));
+  avl = gpr_avl_add(avl, box(953), box(3), NULL);
+  avl = gpr_avl_add(avl, box(101), box(4), NULL);
+  avl = gpr_avl_add(avl, box(516), box(5), NULL);
+  avl = gpr_avl_add(avl, box(547), box(6), NULL);
+  avl = gpr_avl_add(avl, box(467), box(7), NULL);
+  avl = gpr_avl_add(avl, box(793), box(8), NULL);
   avl = remove_int(avl, 190);
-  avl = gpr_avl_add(avl, box(687), box(10));
-  avl = gpr_avl_add(avl, box(242), box(11));
-  avl = gpr_avl_add(avl, box(142), box(12));
+  avl = gpr_avl_add(avl, box(687), box(10), NULL);
+  avl = gpr_avl_add(avl, box(242), box(11), NULL);
+  avl = gpr_avl_add(avl, box(142), box(12), NULL);
   avl = remove_int(avl, 705);
   avl = remove_int(avl, 578);
   avl = remove_int(avl, 767);
   avl = remove_int(avl, 183);
-  avl = gpr_avl_add(avl, box(950), box(17));
-  avl = gpr_avl_add(avl, box(622), box(18));
+  avl = gpr_avl_add(avl, box(950), box(17), NULL);
+  avl = gpr_avl_add(avl, box(622), box(18), NULL);
   avl = remove_int(avl, 513);
   avl = remove_int(avl, 429);
-  avl = gpr_avl_add(avl, box(205), box(21));
+  avl = gpr_avl_add(avl, box(205), box(21), NULL);
   avl = remove_int(avl, 663);
   avl = remove_int(avl, 953);
   avl = remove_int(avl, 892);
-  avl = gpr_avl_add(avl, box(236), box(25));
+  avl = gpr_avl_add(avl, box(236), box(25), NULL);
   avl = remove_int(avl, 982);
   avl = remove_int(avl, 201);
   avl = remove_int(avl, 684);
-  avl = gpr_avl_add(avl, box(572), box(29));
+  avl = gpr_avl_add(avl, box(572), box(29), NULL);
   avl = remove_int(avl, 817);
-  avl = gpr_avl_add(avl, box(970), box(31));
+  avl = gpr_avl_add(avl, box(970), box(31), NULL);
   avl = remove_int(avl, 347);
   avl = remove_int(avl, 574);
-  avl = gpr_avl_add(avl, box(752), box(34));
-  avl = gpr_avl_add(avl, box(670), box(35));
-  avl = gpr_avl_add(avl, box(69), box(36));
+  avl = gpr_avl_add(avl, box(752), box(34), NULL);
+  avl = gpr_avl_add(avl, box(670), box(35), NULL);
+  avl = gpr_avl_add(avl, box(69), box(36), NULL);
   avl = remove_int(avl, 111);
   avl = remove_int(avl, 523);
-  avl = gpr_avl_add(avl, box(141), box(39));
+  avl = gpr_avl_add(avl, box(141), box(39), NULL);
   avl = remove_int(avl, 159);
-  avl = gpr_avl_add(avl, box(947), box(41));
-  avl = gpr_avl_add(avl, box(855), box(42));
+  avl = gpr_avl_add(avl, box(947), box(41), NULL);
+  avl = gpr_avl_add(avl, box(855), box(42), NULL);
   avl = remove_int(avl, 218);
   avl = remove_int(avl, 6);
-  avl = gpr_avl_add(avl, box(753), box(45));
+  avl = gpr_avl_add(avl, box(753), box(45), NULL);
   avl = remove_int(avl, 82);
   avl = remove_int(avl, 799);
-  avl = gpr_avl_add(avl, box(572), box(48));
+  avl = gpr_avl_add(avl, box(572), box(48), NULL);
   avl = remove_int(avl, 376);
   avl = remove_int(avl, 413);
-  avl = gpr_avl_add(avl, box(458), box(51));
+  avl = gpr_avl_add(avl, box(458), box(51), NULL);
   avl = remove_int(avl, 897);
-  avl = gpr_avl_add(avl, box(191), box(53));
-  avl = gpr_avl_add(avl, box(609), box(54));
+  avl = gpr_avl_add(avl, box(191), box(53), NULL);
+  avl = gpr_avl_add(avl, box(609), box(54), NULL);
   avl = remove_int(avl, 787);
   avl = remove_int(avl, 710);
   avl = remove_int(avl, 886);
   avl = remove_int(avl, 835);
   avl = remove_int(avl, 33);
-  avl = gpr_avl_add(avl, box(871), box(60));
+  avl = gpr_avl_add(avl, box(871), box(60), NULL);
   avl = remove_int(avl, 641);
-  avl = gpr_avl_add(avl, box(462), box(62));
+  avl = gpr_avl_add(avl, box(462), box(62), NULL);
   avl = remove_int(avl, 359);
   avl = remove_int(avl, 767);
-  avl = gpr_avl_add(avl, box(310), box(65));
+  avl = gpr_avl_add(avl, box(310), box(65), NULL);
   avl = remove_int(avl, 757);
   avl = remove_int(avl, 639);
   avl = remove_int(avl, 314);
-  avl = gpr_avl_add(avl, box(2), box(69));
+  avl = gpr_avl_add(avl, box(2), box(69), NULL);
   avl = remove_int(avl, 138);
-  avl = gpr_avl_add(avl, box(669), box(71));
+  avl = gpr_avl_add(avl, box(669), box(71), NULL);
   avl = remove_int(avl, 477);
-  avl = gpr_avl_add(avl, box(366), box(73));
-  avl = gpr_avl_add(avl, box(612), box(74));
-  avl = gpr_avl_add(avl, box(106), box(75));
+  avl = gpr_avl_add(avl, box(366), box(73), NULL);
+  avl = gpr_avl_add(avl, box(612), box(74), NULL);
+  avl = gpr_avl_add(avl, box(106), box(75), NULL);
   avl = remove_int(avl, 161);
-  avl = gpr_avl_add(avl, box(388), box(77));
-  avl = gpr_avl_add(avl, box(141), box(78));
+  avl = gpr_avl_add(avl, box(388), box(77), NULL);
+  avl = gpr_avl_add(avl, box(141), box(78), NULL);
   avl = remove_int(avl, 633);
   avl = remove_int(avl, 459);
-  avl = gpr_avl_add(avl, box(40), box(81));
+  avl = gpr_avl_add(avl, box(40), box(81), NULL);
   avl = remove_int(avl, 689);
-  avl = gpr_avl_add(avl, box(823), box(83));
+  avl = gpr_avl_add(avl, box(823), box(83), NULL);
   avl = remove_int(avl, 485);
-  avl = gpr_avl_add(avl, box(903), box(85));
-  avl = gpr_avl_add(avl, box(592), box(86));
+  avl = gpr_avl_add(avl, box(903), box(85), NULL);
+  avl = gpr_avl_add(avl, box(592), box(86), NULL);
   avl = remove_int(avl, 448);
-  avl = gpr_avl_add(avl, box(56), box(88));
+  avl = gpr_avl_add(avl, box(56), box(88), NULL);
   avl = remove_int(avl, 333);
-  avl = gpr_avl_add(avl, box(189), box(90));
-  avl = gpr_avl_add(avl, box(103), box(91));
+  avl = gpr_avl_add(avl, box(189), box(90), NULL);
+  avl = gpr_avl_add(avl, box(103), box(91), NULL);
   avl = remove_int(avl, 164);
   avl = remove_int(avl, 974);
-  avl = gpr_avl_add(avl, box(215), box(94));
+  avl = gpr_avl_add(avl, box(215), box(94), NULL);
   avl = remove_int(avl, 189);
   avl = remove_int(avl, 504);
-  avl = gpr_avl_add(avl, box(868), box(97));
+  avl = gpr_avl_add(avl, box(868), box(97), NULL);
   avl = remove_int(avl, 909);
   avl = remove_int(avl, 148);
   avl = remove_int(avl, 469);
-  avl = gpr_avl_add(avl, box(994), box(101));
-  avl = gpr_avl_add(avl, box(576), box(102));
+  avl = gpr_avl_add(avl, box(994), box(101), NULL);
+  avl = gpr_avl_add(avl, box(576), box(102), NULL);
   avl = remove_int(avl, 82);
   avl = remove_int(avl, 209);
-  avl = gpr_avl_add(avl, box(276), box(105));
+  avl = gpr_avl_add(avl, box(276), box(105), NULL);
   avl = remove_int(avl, 856);
-  avl = gpr_avl_add(avl, box(750), box(107));
+  avl = gpr_avl_add(avl, box(750), box(107), NULL);
   avl = remove_int(avl, 871);
-  avl = gpr_avl_add(avl, box(301), box(109));
+  avl = gpr_avl_add(avl, box(301), box(109), NULL);
   avl = remove_int(avl, 260);
   avl = remove_int(avl, 737);
   avl = remove_int(avl, 719);
-  avl = gpr_avl_add(avl, box(933), box(113));
-  avl = gpr_avl_add(avl, box(225), box(114));
-  avl = gpr_avl_add(avl, box(975), box(115));
-  avl = gpr_avl_add(avl, box(86), box(116));
+  avl = gpr_avl_add(avl, box(933), box(113), NULL);
+  avl = gpr_avl_add(avl, box(225), box(114), NULL);
+  avl = gpr_avl_add(avl, box(975), box(115), NULL);
+  avl = gpr_avl_add(avl, box(86), box(116), NULL);
   avl = remove_int(avl, 732);
-  avl = gpr_avl_add(avl, box(340), box(118));
-  avl = gpr_avl_add(avl, box(271), box(119));
+  avl = gpr_avl_add(avl, box(340), box(118), NULL);
+  avl = gpr_avl_add(avl, box(271), box(119), NULL);
   avl = remove_int(avl, 206);
-  avl = gpr_avl_add(avl, box(949), box(121));
-  avl = gpr_avl_add(avl, box(927), box(122));
-  avl = gpr_avl_add(avl, box(34), box(123));
-  avl = gpr_avl_add(avl, box(351), box(124));
+  avl = gpr_avl_add(avl, box(949), box(121), NULL);
+  avl = gpr_avl_add(avl, box(927), box(122), NULL);
+  avl = gpr_avl_add(avl, box(34), box(123), NULL);
+  avl = gpr_avl_add(avl, box(351), box(124), NULL);
   avl = remove_int(avl, 836);
-  avl = gpr_avl_add(avl, box(825), box(126));
-  avl = gpr_avl_add(avl, box(352), box(127));
+  avl = gpr_avl_add(avl, box(825), box(126), NULL);
+  avl = gpr_avl_add(avl, box(352), box(127), NULL);
   avl = remove_int(avl, 107);
   avl = remove_int(avl, 101);
-  avl = gpr_avl_add(avl, box(320), box(130));
-  avl = gpr_avl_add(avl, box(3), box(131));
+  avl = gpr_avl_add(avl, box(320), box(130), NULL);
+  avl = gpr_avl_add(avl, box(3), box(131), NULL);
   avl = remove_int(avl, 998);
   avl = remove_int(avl, 44);
-  avl = gpr_avl_add(avl, box(525), box(134));
-  avl = gpr_avl_add(avl, box(864), box(135));
-  avl = gpr_avl_add(avl, box(863), box(136));
+  avl = gpr_avl_add(avl, box(525), box(134), NULL);
+  avl = gpr_avl_add(avl, box(864), box(135), NULL);
+  avl = gpr_avl_add(avl, box(863), box(136), NULL);
   avl = remove_int(avl, 770);
-  avl = gpr_avl_add(avl, box(440), box(138));
+  avl = gpr_avl_add(avl, box(440), box(138), NULL);
   avl = remove_int(avl, 516);
-  avl = gpr_avl_add(avl, box(116), box(140));
+  avl = gpr_avl_add(avl, box(116), box(140), NULL);
   avl = remove_int(avl, 380);
-  avl = gpr_avl_add(avl, box(878), box(142));
+  avl = gpr_avl_add(avl, box(878), box(142), NULL);
   avl = remove_int(avl, 439);
-  avl = gpr_avl_add(avl, box(994), box(144));
+  avl = gpr_avl_add(avl, box(994), box(144), NULL);
   avl = remove_int(avl, 294);
   avl = remove_int(avl, 593);
-  avl = gpr_avl_add(avl, box(696), box(147));
+  avl = gpr_avl_add(avl, box(696), box(147), NULL);
   avl = remove_int(avl, 8);
-  avl = gpr_avl_add(avl, box(881), box(149));
+  avl = gpr_avl_add(avl, box(881), box(149), NULL);
   avl = remove_int(avl, 32);
   avl = remove_int(avl, 242);
-  avl = gpr_avl_add(avl, box(487), box(152));
-  avl = gpr_avl_add(avl, box(637), box(153));
-  avl = gpr_avl_add(avl, box(793), box(154));
-  avl = gpr_avl_add(avl, box(696), box(155));
+  avl = gpr_avl_add(avl, box(487), box(152), NULL);
+  avl = gpr_avl_add(avl, box(637), box(153), NULL);
+  avl = gpr_avl_add(avl, box(793), box(154), NULL);
+  avl = gpr_avl_add(avl, box(696), box(155), NULL);
   avl = remove_int(avl, 458);
-  avl = gpr_avl_add(avl, box(828), box(157));
+  avl = gpr_avl_add(avl, box(828), box(157), NULL);
   avl = remove_int(avl, 784);
   avl = remove_int(avl, 274);
-  avl = gpr_avl_add(avl, box(783), box(160));
+  avl = gpr_avl_add(avl, box(783), box(160), NULL);
   avl = remove_int(avl, 21);
-  avl = gpr_avl_add(avl, box(866), box(162));
+  avl = gpr_avl_add(avl, box(866), box(162), NULL);
   avl = remove_int(avl, 919);
-  avl = gpr_avl_add(avl, box(435), box(164));
+  avl = gpr_avl_add(avl, box(435), box(164), NULL);
   avl = remove_int(avl, 385);
-  avl = gpr_avl_add(avl, box(475), box(166));
+  avl = gpr_avl_add(avl, box(475), box(166), NULL);
   avl = remove_int(avl, 339);
-  avl = gpr_avl_add(avl, box(615), box(168));
+  avl = gpr_avl_add(avl, box(615), box(168), NULL);
   avl = remove_int(avl, 866);
   avl = remove_int(avl, 82);
   avl = remove_int(avl, 271);
-  avl = gpr_avl_add(avl, box(590), box(172));
-  avl = gpr_avl_add(avl, box(852), box(173));
+  avl = gpr_avl_add(avl, box(590), box(172), NULL);
+  avl = gpr_avl_add(avl, box(852), box(173), NULL);
   avl = remove_int(avl, 318);
   avl = remove_int(avl, 82);
-  avl = gpr_avl_add(avl, box(672), box(176));
+  avl = gpr_avl_add(avl, box(672), box(176), NULL);
   avl = remove_int(avl, 430);
-  avl = gpr_avl_add(avl, box(821), box(178));
-  avl = gpr_avl_add(avl, box(365), box(179));
+  avl = gpr_avl_add(avl, box(821), box(178), NULL);
+  avl = gpr_avl_add(avl, box(365), box(179), NULL);
   avl = remove_int(avl, 78);
-  avl = gpr_avl_add(avl, box(700), box(181));
-  avl = gpr_avl_add(avl, box(353), box(182));
+  avl = gpr_avl_add(avl, box(700), box(181), NULL);
+  avl = gpr_avl_add(avl, box(353), box(182), NULL);
   avl = remove_int(avl, 492);
-  avl = gpr_avl_add(avl, box(991), box(184));
+  avl = gpr_avl_add(avl, box(991), box(184), NULL);
   avl = remove_int(avl, 330);
-  avl = gpr_avl_add(avl, box(873), box(186));
+  avl = gpr_avl_add(avl, box(873), box(186), NULL);
   avl = remove_int(avl, 589);
-  avl = gpr_avl_add(avl, box(676), box(188));
-  avl = gpr_avl_add(avl, box(790), box(189));
+  avl = gpr_avl_add(avl, box(676), box(188), NULL);
+  avl = gpr_avl_add(avl, box(790), box(189), NULL);
   avl = remove_int(avl, 521);
   avl = remove_int(avl, 47);
-  avl = gpr_avl_add(avl, box(976), box(192));
-  avl = gpr_avl_add(avl, box(683), box(193));
+  avl = gpr_avl_add(avl, box(976), box(192), NULL);
+  avl = gpr_avl_add(avl, box(683), box(193), NULL);
   avl = remove_int(avl, 803);
   avl = remove_int(avl, 1006);
-  avl = gpr_avl_add(avl, box(775), box(196));
-  avl = gpr_avl_add(avl, box(411), box(197));
-  avl = gpr_avl_add(avl, box(697), box(198));
+  avl = gpr_avl_add(avl, box(775), box(196), NULL);
+  avl = gpr_avl_add(avl, box(411), box(197), NULL);
+  avl = gpr_avl_add(avl, box(697), box(198), NULL);
   avl = remove_int(avl, 50);
-  avl = gpr_avl_add(avl, box(213), box(200));
+  avl = gpr_avl_add(avl, box(213), box(200), NULL);
   avl = remove_int(avl, 714);
-  avl = gpr_avl_add(avl, box(981), box(202));
-  avl = gpr_avl_add(avl, box(502), box(203));
-  avl = gpr_avl_add(avl, box(697), box(204));
-  avl = gpr_avl_add(avl, box(603), box(205));
-  avl = gpr_avl_add(avl, box(117), box(206));
+  avl = gpr_avl_add(avl, box(981), box(202), NULL);
+  avl = gpr_avl_add(avl, box(502), box(203), NULL);
+  avl = gpr_avl_add(avl, box(697), box(204), NULL);
+  avl = gpr_avl_add(avl, box(603), box(205), NULL);
+  avl = gpr_avl_add(avl, box(117), box(206), NULL);
   avl = remove_int(avl, 363);
-  avl = gpr_avl_add(avl, box(104), box(208));
+  avl = gpr_avl_add(avl, box(104), box(208), NULL);
   avl = remove_int(avl, 842);
-  avl = gpr_avl_add(avl, box(48), box(210));
+  avl = gpr_avl_add(avl, box(48), box(210), NULL);
   avl = remove_int(avl, 764);
-  avl = gpr_avl_add(avl, box(482), box(212));
-  avl = gpr_avl_add(avl, box(928), box(213));
-  avl = gpr_avl_add(avl, box(30), box(214));
-  avl = gpr_avl_add(avl, box(820), box(215));
-  avl = gpr_avl_add(avl, box(334), box(216));
+  avl = gpr_avl_add(avl, box(482), box(212), NULL);
+  avl = gpr_avl_add(avl, box(928), box(213), NULL);
+  avl = gpr_avl_add(avl, box(30), box(214), NULL);
+  avl = gpr_avl_add(avl, box(820), box(215), NULL);
+  avl = gpr_avl_add(avl, box(334), box(216), NULL);
   avl = remove_int(avl, 306);
-  avl = gpr_avl_add(avl, box(789), box(218));
+  avl = gpr_avl_add(avl, box(789), box(218), NULL);
   avl = remove_int(avl, 924);
-  avl = gpr_avl_add(avl, box(53), box(220));
+  avl = gpr_avl_add(avl, box(53), box(220), NULL);
   avl = remove_int(avl, 657);
-  avl = gpr_avl_add(avl, box(130), box(222));
-  avl = gpr_avl_add(avl, box(239), box(223));
+  avl = gpr_avl_add(avl, box(130), box(222), NULL);
+  avl = gpr_avl_add(avl, box(239), box(223), NULL);
   avl = remove_int(avl, 20);
-  avl = gpr_avl_add(avl, box(117), box(225));
+  avl = gpr_avl_add(avl, box(117), box(225), NULL);
   avl = remove_int(avl, 882);
   avl = remove_int(avl, 891);
-  avl = gpr_avl_add(avl, box(9), box(228));
-  avl = gpr_avl_add(avl, box(496), box(229));
-  avl = gpr_avl_add(avl, box(750), box(230));
-  avl = gpr_avl_add(avl, box(283), box(231));
-  avl = gpr_avl_add(avl, box(802), box(232));
+  avl = gpr_avl_add(avl, box(9), box(228), NULL);
+  avl = gpr_avl_add(avl, box(496), box(229), NULL);
+  avl = gpr_avl_add(avl, box(750), box(230), NULL);
+  avl = gpr_avl_add(avl, box(283), box(231), NULL);
+  avl = gpr_avl_add(avl, box(802), box(232), NULL);
   avl = remove_int(avl, 352);
-  avl = gpr_avl_add(avl, box(374), box(234));
-  avl = gpr_avl_add(avl, box(6), box(235));
-  avl = gpr_avl_add(avl, box(756), box(236));
-  avl = gpr_avl_add(avl, box(597), box(237));
-  avl = gpr_avl_add(avl, box(661), box(238));
+  avl = gpr_avl_add(avl, box(374), box(234), NULL);
+  avl = gpr_avl_add(avl, box(6), box(235), NULL);
+  avl = gpr_avl_add(avl, box(756), box(236), NULL);
+  avl = gpr_avl_add(avl, box(597), box(237), NULL);
+  avl = gpr_avl_add(avl, box(661), box(238), NULL);
   avl = remove_int(avl, 96);
-  avl = gpr_avl_add(avl, box(894), box(240));
+  avl = gpr_avl_add(avl, box(894), box(240), NULL);
   avl = remove_int(avl, 749);
-  avl = gpr_avl_add(avl, box(71), box(242));
+  avl = gpr_avl_add(avl, box(71), box(242), NULL);
   avl = remove_int(avl, 68);
-  avl = gpr_avl_add(avl, box(388), box(244));
+  avl = gpr_avl_add(avl, box(388), box(244), NULL);
   avl = remove_int(avl, 119);
   avl = remove_int(avl, 856);
-  avl = gpr_avl_add(avl, box(176), box(247));
-  avl = gpr_avl_add(avl, box(993), box(248));
+  avl = gpr_avl_add(avl, box(176), box(247), NULL);
+  avl = gpr_avl_add(avl, box(993), box(248), NULL);
   avl = remove_int(avl, 178);
   avl = remove_int(avl, 781);
   avl = remove_int(avl, 771);
@@ -499,37 +501,37 @@ static void test_badcase2(void) {
   avl = remove_int(avl, 157);
   avl = remove_int(avl, 142);
   avl = remove_int(avl, 686);
-  avl = gpr_avl_add(avl, box(779), box(257));
-  avl = gpr_avl_add(avl, box(484), box(258));
+  avl = gpr_avl_add(avl, box(779), box(257), NULL);
+  avl = gpr_avl_add(avl, box(484), box(258), NULL);
   avl = remove_int(avl, 837);
-  avl = gpr_avl_add(avl, box(388), box(260));
+  avl = gpr_avl_add(avl, box(388), box(260), NULL);
   avl = remove_int(avl, 987);
-  avl = gpr_avl_add(avl, box(336), box(262));
+  avl = gpr_avl_add(avl, box(336), box(262), NULL);
   avl = remove_int(avl, 855);
-  avl = gpr_avl_add(avl, box(668), box(264));
+  avl = gpr_avl_add(avl, box(668), box(264), NULL);
   avl = remove_int(avl, 648);
-  avl = gpr_avl_add(avl, box(193), box(266));
+  avl = gpr_avl_add(avl, box(193), box(266), NULL);
   avl = remove_int(avl, 939);
-  avl = gpr_avl_add(avl, box(740), box(268));
-  avl = gpr_avl_add(avl, box(503), box(269));
-  avl = gpr_avl_add(avl, box(765), box(270));
+  avl = gpr_avl_add(avl, box(740), box(268), NULL);
+  avl = gpr_avl_add(avl, box(503), box(269), NULL);
+  avl = gpr_avl_add(avl, box(765), box(270), NULL);
   avl = remove_int(avl, 924);
   avl = remove_int(avl, 513);
-  avl = gpr_avl_add(avl, box(161), box(273));
-  avl = gpr_avl_add(avl, box(502), box(274));
-  avl = gpr_avl_add(avl, box(846), box(275));
+  avl = gpr_avl_add(avl, box(161), box(273), NULL);
+  avl = gpr_avl_add(avl, box(502), box(274), NULL);
+  avl = gpr_avl_add(avl, box(846), box(275), NULL);
   avl = remove_int(avl, 931);
-  avl = gpr_avl_add(avl, box(87), box(277));
-  avl = gpr_avl_add(avl, box(949), box(278));
-  avl = gpr_avl_add(avl, box(548), box(279));
-  avl = gpr_avl_add(avl, box(951), box(280));
+  avl = gpr_avl_add(avl, box(87), box(277), NULL);
+  avl = gpr_avl_add(avl, box(949), box(278), NULL);
+  avl = gpr_avl_add(avl, box(548), box(279), NULL);
+  avl = gpr_avl_add(avl, box(951), box(280), NULL);
   avl = remove_int(avl, 1018);
   avl = remove_int(avl, 568);
-  avl = gpr_avl_add(avl, box(138), box(283));
-  avl = gpr_avl_add(avl, box(202), box(284));
-  avl = gpr_avl_add(avl, box(157), box(285));
-  avl = gpr_avl_add(avl, box(264), box(286));
-  avl = gpr_avl_add(avl, box(370), box(287));
+  avl = gpr_avl_add(avl, box(138), box(283), NULL);
+  avl = gpr_avl_add(avl, box(202), box(284), NULL);
+  avl = gpr_avl_add(avl, box(157), box(285), NULL);
+  avl = gpr_avl_add(avl, box(264), box(286), NULL);
+  avl = gpr_avl_add(avl, box(370), box(287), NULL);
   avl = remove_int(avl, 736);
   avl = remove_int(avl, 751);
   avl = remove_int(avl, 506);
@@ -537,524 +539,524 @@ static void test_badcase2(void) {
   avl = remove_int(avl, 358);
   avl = remove_int(avl, 657);
   avl = remove_int(avl, 86);
-  avl = gpr_avl_add(avl, box(876), box(295));
+  avl = gpr_avl_add(avl, box(876), box(295), NULL);
   avl = remove_int(avl, 354);
-  avl = gpr_avl_add(avl, box(134), box(297));
+  avl = gpr_avl_add(avl, box(134), box(297), NULL);
   avl = remove_int(avl, 781);
   avl = remove_int(avl, 183);
-  avl = gpr_avl_add(avl, box(914), box(300));
+  avl = gpr_avl_add(avl, box(914), box(300), NULL);
   avl = remove_int(avl, 926);
   avl = remove_int(avl, 398);
   avl = remove_int(avl, 932);
   avl = remove_int(avl, 804);
   avl = remove_int(avl, 326);
-  avl = gpr_avl_add(avl, box(208), box(306));
-  avl = gpr_avl_add(avl, box(699), box(307));
+  avl = gpr_avl_add(avl, box(208), box(306), NULL);
+  avl = gpr_avl_add(avl, box(699), box(307), NULL);
   avl = remove_int(avl, 576);
   avl = remove_int(avl, 850);
   avl = remove_int(avl, 514);
   avl = remove_int(avl, 676);
   avl = remove_int(avl, 549);
   avl = remove_int(avl, 767);
-  avl = gpr_avl_add(avl, box(58), box(314));
-  avl = gpr_avl_add(avl, box(265), box(315));
-  avl = gpr_avl_add(avl, box(268), box(316));
-  avl = gpr_avl_add(avl, box(103), box(317));
-  avl = gpr_avl_add(avl, box(440), box(318));
+  avl = gpr_avl_add(avl, box(58), box(314), NULL);
+  avl = gpr_avl_add(avl, box(265), box(315), NULL);
+  avl = gpr_avl_add(avl, box(268), box(316), NULL);
+  avl = gpr_avl_add(avl, box(103), box(317), NULL);
+  avl = gpr_avl_add(avl, box(440), box(318), NULL);
   avl = remove_int(avl, 777);
-  avl = gpr_avl_add(avl, box(670), box(320));
+  avl = gpr_avl_add(avl, box(670), box(320), NULL);
   avl = remove_int(avl, 506);
   avl = remove_int(avl, 487);
-  avl = gpr_avl_add(avl, box(421), box(323));
+  avl = gpr_avl_add(avl, box(421), box(323), NULL);
   avl = remove_int(avl, 514);
-  avl = gpr_avl_add(avl, box(701), box(325));
+  avl = gpr_avl_add(avl, box(701), box(325), NULL);
   avl = remove_int(avl, 949);
   avl = remove_int(avl, 872);
   avl = remove_int(avl, 139);
-  avl = gpr_avl_add(avl, box(781), box(329));
-  avl = gpr_avl_add(avl, box(543), box(330));
-  avl = gpr_avl_add(avl, box(147), box(331));
+  avl = gpr_avl_add(avl, box(781), box(329), NULL);
+  avl = gpr_avl_add(avl, box(543), box(330), NULL);
+  avl = gpr_avl_add(avl, box(147), box(331), NULL);
   avl = remove_int(avl, 190);
-  avl = gpr_avl_add(avl, box(453), box(333));
+  avl = gpr_avl_add(avl, box(453), box(333), NULL);
   avl = remove_int(avl, 262);
   avl = remove_int(avl, 850);
   avl = remove_int(avl, 286);
   avl = remove_int(avl, 787);
-  avl = gpr_avl_add(avl, box(514), box(338));
+  avl = gpr_avl_add(avl, box(514), box(338), NULL);
   avl = remove_int(avl, 812);
-  avl = gpr_avl_add(avl, box(431), box(340));
-  avl = gpr_avl_add(avl, box(8), box(341));
+  avl = gpr_avl_add(avl, box(431), box(340), NULL);
+  avl = gpr_avl_add(avl, box(8), box(341), NULL);
   avl = remove_int(avl, 843);
-  avl = gpr_avl_add(avl, box(831), box(343));
+  avl = gpr_avl_add(avl, box(831), box(343), NULL);
   avl = remove_int(avl, 472);
   avl = remove_int(avl, 157);
-  avl = gpr_avl_add(avl, box(612), box(346));
-  avl = gpr_avl_add(avl, box(802), box(347));
+  avl = gpr_avl_add(avl, box(612), box(346), NULL);
+  avl = gpr_avl_add(avl, box(802), box(347), NULL);
   avl = remove_int(avl, 554);
-  avl = gpr_avl_add(avl, box(409), box(349));
-  avl = gpr_avl_add(avl, box(439), box(350));
-  avl = gpr_avl_add(avl, box(725), box(351));
-  avl = gpr_avl_add(avl, box(568), box(352));
+  avl = gpr_avl_add(avl, box(409), box(349), NULL);
+  avl = gpr_avl_add(avl, box(439), box(350), NULL);
+  avl = gpr_avl_add(avl, box(725), box(351), NULL);
+  avl = gpr_avl_add(avl, box(568), box(352), NULL);
   avl = remove_int(avl, 475);
   avl = remove_int(avl, 672);
   avl = remove_int(avl, 62);
   avl = remove_int(avl, 753);
-  avl = gpr_avl_add(avl, box(435), box(357));
-  avl = gpr_avl_add(avl, box(950), box(358));
-  avl = gpr_avl_add(avl, box(532), box(359));
-  avl = gpr_avl_add(avl, box(832), box(360));
+  avl = gpr_avl_add(avl, box(435), box(357), NULL);
+  avl = gpr_avl_add(avl, box(950), box(358), NULL);
+  avl = gpr_avl_add(avl, box(532), box(359), NULL);
+  avl = gpr_avl_add(avl, box(832), box(360), NULL);
   avl = remove_int(avl, 390);
-  avl = gpr_avl_add(avl, box(993), box(362));
+  avl = gpr_avl_add(avl, box(993), box(362), NULL);
   avl = remove_int(avl, 198);
   avl = remove_int(avl, 401);
-  avl = gpr_avl_add(avl, box(316), box(365));
+  avl = gpr_avl_add(avl, box(316), box(365), NULL);
   avl = remove_int(avl, 843);
-  avl = gpr_avl_add(avl, box(541), box(367));
-  avl = gpr_avl_add(avl, box(505), box(368));
+  avl = gpr_avl_add(avl, box(541), box(367), NULL);
+  avl = gpr_avl_add(avl, box(505), box(368), NULL);
   avl = remove_int(avl, 445);
   avl = remove_int(avl, 256);
-  avl = gpr_avl_add(avl, box(232), box(371));
+  avl = gpr_avl_add(avl, box(232), box(371), NULL);
   avl = remove_int(avl, 577);
   avl = remove_int(avl, 558);
-  avl = gpr_avl_add(avl, box(910), box(374));
+  avl = gpr_avl_add(avl, box(910), box(374), NULL);
   avl = remove_int(avl, 902);
   avl = remove_int(avl, 755);
   avl = remove_int(avl, 114);
   avl = remove_int(avl, 438);
   avl = remove_int(avl, 224);
-  avl = gpr_avl_add(avl, box(920), box(380));
-  avl = gpr_avl_add(avl, box(655), box(381));
+  avl = gpr_avl_add(avl, box(920), box(380), NULL);
+  avl = gpr_avl_add(avl, box(655), box(381), NULL);
   avl = remove_int(avl, 557);
   avl = remove_int(avl, 102);
   avl = remove_int(avl, 165);
-  avl = gpr_avl_add(avl, box(191), box(385));
+  avl = gpr_avl_add(avl, box(191), box(385), NULL);
   avl = remove_int(avl, 30);
-  avl = gpr_avl_add(avl, box(406), box(387));
-  avl = gpr_avl_add(avl, box(66), box(388));
-  avl = gpr_avl_add(avl, box(87), box(389));
+  avl = gpr_avl_add(avl, box(406), box(387), NULL);
+  avl = gpr_avl_add(avl, box(66), box(388), NULL);
+  avl = gpr_avl_add(avl, box(87), box(389), NULL);
   avl = remove_int(avl, 7);
   avl = remove_int(avl, 671);
-  avl = gpr_avl_add(avl, box(234), box(392));
+  avl = gpr_avl_add(avl, box(234), box(392), NULL);
   avl = remove_int(avl, 463);
-  avl = gpr_avl_add(avl, box(75), box(394));
-  avl = gpr_avl_add(avl, box(487), box(395));
+  avl = gpr_avl_add(avl, box(75), box(394), NULL);
+  avl = gpr_avl_add(avl, box(487), box(395), NULL);
   avl = remove_int(avl, 203);
-  avl = gpr_avl_add(avl, box(711), box(397));
+  avl = gpr_avl_add(avl, box(711), box(397), NULL);
   avl = remove_int(avl, 291);
   avl = remove_int(avl, 798);
   avl = remove_int(avl, 337);
-  avl = gpr_avl_add(avl, box(877), box(401));
-  avl = gpr_avl_add(avl, box(388), box(402));
+  avl = gpr_avl_add(avl, box(877), box(401), NULL);
+  avl = gpr_avl_add(avl, box(388), box(402), NULL);
   avl = remove_int(avl, 975);
-  avl = gpr_avl_add(avl, box(200), box(404));
-  avl = gpr_avl_add(avl, box(408), box(405));
-  avl = gpr_avl_add(avl, box(3), box(406));
-  avl = gpr_avl_add(avl, box(971), box(407));
+  avl = gpr_avl_add(avl, box(200), box(404), NULL);
+  avl = gpr_avl_add(avl, box(408), box(405), NULL);
+  avl = gpr_avl_add(avl, box(3), box(406), NULL);
+  avl = gpr_avl_add(avl, box(971), box(407), NULL);
   avl = remove_int(avl, 841);
   avl = remove_int(avl, 910);
   avl = remove_int(avl, 74);
   avl = remove_int(avl, 888);
-  avl = gpr_avl_add(avl, box(492), box(412));
+  avl = gpr_avl_add(avl, box(492), box(412), NULL);
   avl = remove_int(avl, 14);
   avl = remove_int(avl, 364);
-  avl = gpr_avl_add(avl, box(215), box(415));
+  avl = gpr_avl_add(avl, box(215), box(415), NULL);
   avl = remove_int(avl, 778);
   avl = remove_int(avl, 45);
-  avl = gpr_avl_add(avl, box(328), box(418));
-  avl = gpr_avl_add(avl, box(597), box(419));
+  avl = gpr_avl_add(avl, box(328), box(418), NULL);
+  avl = gpr_avl_add(avl, box(597), box(419), NULL);
   avl = remove_int(avl, 34);
-  avl = gpr_avl_add(avl, box(736), box(421));
+  avl = gpr_avl_add(avl, box(736), box(421), NULL);
   avl = remove_int(avl, 37);
-  avl = gpr_avl_add(avl, box(275), box(423));
-  avl = gpr_avl_add(avl, box(70), box(424));
-  avl = gpr_avl_add(avl, box(771), box(425));
+  avl = gpr_avl_add(avl, box(275), box(423), NULL);
+  avl = gpr_avl_add(avl, box(70), box(424), NULL);
+  avl = gpr_avl_add(avl, box(771), box(425), NULL);
   avl = remove_int(avl, 536);
   avl = remove_int(avl, 421);
-  avl = gpr_avl_add(avl, box(186), box(428));
-  avl = gpr_avl_add(avl, box(788), box(429));
-  avl = gpr_avl_add(avl, box(224), box(430));
+  avl = gpr_avl_add(avl, box(186), box(428), NULL);
+  avl = gpr_avl_add(avl, box(788), box(429), NULL);
+  avl = gpr_avl_add(avl, box(224), box(430), NULL);
   avl = remove_int(avl, 228);
-  avl = gpr_avl_add(avl, box(48), box(432));
-  avl = gpr_avl_add(avl, box(120), box(433));
-  avl = gpr_avl_add(avl, box(269), box(434));
-  avl = gpr_avl_add(avl, box(904), box(435));
+  avl = gpr_avl_add(avl, box(48), box(432), NULL);
+  avl = gpr_avl_add(avl, box(120), box(433), NULL);
+  avl = gpr_avl_add(avl, box(269), box(434), NULL);
+  avl = gpr_avl_add(avl, box(904), box(435), NULL);
   avl = remove_int(avl, 699);
-  avl = gpr_avl_add(avl, box(340), box(437));
+  avl = gpr_avl_add(avl, box(340), box(437), NULL);
   avl = remove_int(avl, 276);
-  avl = gpr_avl_add(avl, box(591), box(439));
-  avl = gpr_avl_add(avl, box(778), box(440));
+  avl = gpr_avl_add(avl, box(591), box(439), NULL);
+  avl = gpr_avl_add(avl, box(778), box(440), NULL);
   avl = remove_int(avl, 490);
   avl = remove_int(avl, 973);
-  avl = gpr_avl_add(avl, box(294), box(443));
-  avl = gpr_avl_add(avl, box(323), box(444));
+  avl = gpr_avl_add(avl, box(294), box(443), NULL);
+  avl = gpr_avl_add(avl, box(323), box(444), NULL);
   avl = remove_int(avl, 685);
-  avl = gpr_avl_add(avl, box(38), box(446));
-  avl = gpr_avl_add(avl, box(525), box(447));
+  avl = gpr_avl_add(avl, box(38), box(446), NULL);
+  avl = gpr_avl_add(avl, box(525), box(447), NULL);
   avl = remove_int(avl, 162);
-  avl = gpr_avl_add(avl, box(462), box(449));
-  avl = gpr_avl_add(avl, box(340), box(450));
+  avl = gpr_avl_add(avl, box(462), box(449), NULL);
+  avl = gpr_avl_add(avl, box(340), box(450), NULL);
   avl = remove_int(avl, 734);
   avl = remove_int(avl, 959);
-  avl = gpr_avl_add(avl, box(752), box(453));
-  avl = gpr_avl_add(avl, box(667), box(454));
+  avl = gpr_avl_add(avl, box(752), box(453), NULL);
+  avl = gpr_avl_add(avl, box(667), box(454), NULL);
   avl = remove_int(avl, 558);
   avl = remove_int(avl, 657);
-  avl = gpr_avl_add(avl, box(711), box(457));
+  avl = gpr_avl_add(avl, box(711), box(457), NULL);
   avl = remove_int(avl, 937);
-  avl = gpr_avl_add(avl, box(741), box(459));
-  avl = gpr_avl_add(avl, box(40), box(460));
+  avl = gpr_avl_add(avl, box(741), box(459), NULL);
+  avl = gpr_avl_add(avl, box(40), box(460), NULL);
   avl = remove_int(avl, 784);
-  avl = gpr_avl_add(avl, box(292), box(462));
+  avl = gpr_avl_add(avl, box(292), box(462), NULL);
   avl = remove_int(avl, 164);
   avl = remove_int(avl, 931);
   avl = remove_int(avl, 886);
-  avl = gpr_avl_add(avl, box(968), box(466));
+  avl = gpr_avl_add(avl, box(968), box(466), NULL);
   avl = remove_int(avl, 263);
-  avl = gpr_avl_add(avl, box(647), box(468));
-  avl = gpr_avl_add(avl, box(92), box(469));
+  avl = gpr_avl_add(avl, box(647), box(468), NULL);
+  avl = gpr_avl_add(avl, box(92), box(469), NULL);
   avl = remove_int(avl, 310);
-  avl = gpr_avl_add(avl, box(711), box(471));
-  avl = gpr_avl_add(avl, box(675), box(472));
+  avl = gpr_avl_add(avl, box(711), box(471), NULL);
+  avl = gpr_avl_add(avl, box(675), box(472), NULL);
   avl = remove_int(avl, 549);
-  avl = gpr_avl_add(avl, box(380), box(474));
+  avl = gpr_avl_add(avl, box(380), box(474), NULL);
   avl = remove_int(avl, 825);
-  avl = gpr_avl_add(avl, box(668), box(476));
+  avl = gpr_avl_add(avl, box(668), box(476), NULL);
   avl = remove_int(avl, 498);
-  avl = gpr_avl_add(avl, box(870), box(478));
-  avl = gpr_avl_add(avl, box(391), box(479));
-  avl = gpr_avl_add(avl, box(264), box(480));
+  avl = gpr_avl_add(avl, box(870), box(478), NULL);
+  avl = gpr_avl_add(avl, box(391), box(479), NULL);
+  avl = gpr_avl_add(avl, box(264), box(480), NULL);
   avl = remove_int(avl, 1);
   avl = remove_int(avl, 849);
   avl = remove_int(avl, 88);
   avl = remove_int(avl, 255);
   avl = remove_int(avl, 763);
   avl = remove_int(avl, 831);
-  avl = gpr_avl_add(avl, box(508), box(487));
+  avl = gpr_avl_add(avl, box(508), box(487), NULL);
   avl = remove_int(avl, 849);
   avl = remove_int(avl, 47);
-  avl = gpr_avl_add(avl, box(299), box(490));
+  avl = gpr_avl_add(avl, box(299), box(490), NULL);
   avl = remove_int(avl, 625);
   avl = remove_int(avl, 433);
   avl = remove_int(avl, 904);
   avl = remove_int(avl, 761);
-  avl = gpr_avl_add(avl, box(33), box(495));
-  avl = gpr_avl_add(avl, box(524), box(496));
+  avl = gpr_avl_add(avl, box(33), box(495), NULL);
+  avl = gpr_avl_add(avl, box(524), box(496), NULL);
   avl = remove_int(avl, 210);
   avl = remove_int(avl, 299);
-  avl = gpr_avl_add(avl, box(823), box(499));
+  avl = gpr_avl_add(avl, box(823), box(499), NULL);
   avl = remove_int(avl, 479);
   avl = remove_int(avl, 96);
   avl = remove_int(avl, 1013);
-  avl = gpr_avl_add(avl, box(768), box(503));
+  avl = gpr_avl_add(avl, box(768), box(503), NULL);
   avl = remove_int(avl, 638);
   avl = remove_int(avl, 20);
-  avl = gpr_avl_add(avl, box(663), box(506));
+  avl = gpr_avl_add(avl, box(663), box(506), NULL);
   avl = remove_int(avl, 882);
-  avl = gpr_avl_add(avl, box(745), box(508));
+  avl = gpr_avl_add(avl, box(745), box(508), NULL);
   avl = remove_int(avl, 352);
-  avl = gpr_avl_add(avl, box(10), box(510));
+  avl = gpr_avl_add(avl, box(10), box(510), NULL);
   avl = remove_int(avl, 484);
-  avl = gpr_avl_add(avl, box(420), box(512));
-  avl = gpr_avl_add(avl, box(884), box(513));
-  avl = gpr_avl_add(avl, box(993), box(514));
-  avl = gpr_avl_add(avl, box(251), box(515));
+  avl = gpr_avl_add(avl, box(420), box(512), NULL);
+  avl = gpr_avl_add(avl, box(884), box(513), NULL);
+  avl = gpr_avl_add(avl, box(993), box(514), NULL);
+  avl = gpr_avl_add(avl, box(251), box(515), NULL);
   avl = remove_int(avl, 222);
-  avl = gpr_avl_add(avl, box(734), box(517));
-  avl = gpr_avl_add(avl, box(952), box(518));
+  avl = gpr_avl_add(avl, box(734), box(517), NULL);
+  avl = gpr_avl_add(avl, box(952), box(518), NULL);
   avl = remove_int(avl, 26);
   avl = remove_int(avl, 270);
   avl = remove_int(avl, 481);
   avl = remove_int(avl, 693);
   avl = remove_int(avl, 1006);
-  avl = gpr_avl_add(avl, box(77), box(524));
+  avl = gpr_avl_add(avl, box(77), box(524), NULL);
   avl = remove_int(avl, 897);
-  avl = gpr_avl_add(avl, box(719), box(526));
-  avl = gpr_avl_add(avl, box(622), box(527));
+  avl = gpr_avl_add(avl, box(719), box(526), NULL);
+  avl = gpr_avl_add(avl, box(622), box(527), NULL);
   avl = remove_int(avl, 28);
   avl = remove_int(avl, 836);
   avl = remove_int(avl, 142);
-  avl = gpr_avl_add(avl, box(445), box(531));
-  avl = gpr_avl_add(avl, box(410), box(532));
+  avl = gpr_avl_add(avl, box(445), box(531), NULL);
+  avl = gpr_avl_add(avl, box(410), box(532), NULL);
   avl = remove_int(avl, 575);
-  avl = gpr_avl_add(avl, box(634), box(534));
-  avl = gpr_avl_add(avl, box(906), box(535));
+  avl = gpr_avl_add(avl, box(634), box(534), NULL);
+  avl = gpr_avl_add(avl, box(906), box(535), NULL);
   avl = remove_int(avl, 649);
-  avl = gpr_avl_add(avl, box(813), box(537));
+  avl = gpr_avl_add(avl, box(813), box(537), NULL);
   avl = remove_int(avl, 702);
   avl = remove_int(avl, 732);
-  avl = gpr_avl_add(avl, box(105), box(540));
-  avl = gpr_avl_add(avl, box(867), box(541));
+  avl = gpr_avl_add(avl, box(105), box(540), NULL);
+  avl = gpr_avl_add(avl, box(867), box(541), NULL);
   avl = remove_int(avl, 964);
   avl = remove_int(avl, 941);
-  avl = gpr_avl_add(avl, box(947), box(544));
+  avl = gpr_avl_add(avl, box(947), box(544), NULL);
   avl = remove_int(avl, 990);
-  avl = gpr_avl_add(avl, box(816), box(546));
+  avl = gpr_avl_add(avl, box(816), box(546), NULL);
   avl = remove_int(avl, 429);
   avl = remove_int(avl, 567);
   avl = remove_int(avl, 541);
   avl = remove_int(avl, 583);
-  avl = gpr_avl_add(avl, box(57), box(551));
-  avl = gpr_avl_add(avl, box(786), box(552));
-  avl = gpr_avl_add(avl, box(526), box(553));
+  avl = gpr_avl_add(avl, box(57), box(551), NULL);
+  avl = gpr_avl_add(avl, box(786), box(552), NULL);
+  avl = gpr_avl_add(avl, box(526), box(553), NULL);
   avl = remove_int(avl, 642);
   avl = remove_int(avl, 220);
   avl = remove_int(avl, 840);
   avl = remove_int(avl, 548);
-  avl = gpr_avl_add(avl, box(528), box(558));
-  avl = gpr_avl_add(avl, box(749), box(559));
-  avl = gpr_avl_add(avl, box(194), box(560));
+  avl = gpr_avl_add(avl, box(528), box(558), NULL);
+  avl = gpr_avl_add(avl, box(749), box(559), NULL);
+  avl = gpr_avl_add(avl, box(194), box(560), NULL);
   avl = remove_int(avl, 517);
-  avl = gpr_avl_add(avl, box(102), box(562));
+  avl = gpr_avl_add(avl, box(102), box(562), NULL);
   avl = remove_int(avl, 189);
-  avl = gpr_avl_add(avl, box(927), box(564));
+  avl = gpr_avl_add(avl, box(927), box(564), NULL);
   avl = remove_int(avl, 846);
   avl = remove_int(avl, 130);
-  avl = gpr_avl_add(avl, box(694), box(567));
+  avl = gpr_avl_add(avl, box(694), box(567), NULL);
   avl = remove_int(avl, 750);
-  avl = gpr_avl_add(avl, box(357), box(569));
+  avl = gpr_avl_add(avl, box(357), box(569), NULL);
   avl = remove_int(avl, 431);
   avl = remove_int(avl, 91);
-  avl = gpr_avl_add(avl, box(640), box(572));
+  avl = gpr_avl_add(avl, box(640), box(572), NULL);
   avl = remove_int(avl, 4);
-  avl = gpr_avl_add(avl, box(81), box(574));
-  avl = gpr_avl_add(avl, box(595), box(575));
+  avl = gpr_avl_add(avl, box(81), box(574), NULL);
+  avl = gpr_avl_add(avl, box(595), box(575), NULL);
   avl = remove_int(avl, 444);
   avl = remove_int(avl, 262);
   avl = remove_int(avl, 11);
-  avl = gpr_avl_add(avl, box(192), box(579));
-  avl = gpr_avl_add(avl, box(158), box(580));
+  avl = gpr_avl_add(avl, box(192), box(579), NULL);
+  avl = gpr_avl_add(avl, box(158), box(580), NULL);
   avl = remove_int(avl, 401);
   avl = remove_int(avl, 918);
-  avl = gpr_avl_add(avl, box(180), box(583));
+  avl = gpr_avl_add(avl, box(180), box(583), NULL);
   avl = remove_int(avl, 268);
-  avl = gpr_avl_add(avl, box(1012), box(585));
-  avl = gpr_avl_add(avl, box(90), box(586));
-  avl = gpr_avl_add(avl, box(946), box(587));
+  avl = gpr_avl_add(avl, box(1012), box(585), NULL);
+  avl = gpr_avl_add(avl, box(90), box(586), NULL);
+  avl = gpr_avl_add(avl, box(946), box(587), NULL);
   avl = remove_int(avl, 719);
-  avl = gpr_avl_add(avl, box(874), box(589));
-  avl = gpr_avl_add(avl, box(679), box(590));
+  avl = gpr_avl_add(avl, box(874), box(589), NULL);
+  avl = gpr_avl_add(avl, box(679), box(590), NULL);
   avl = remove_int(avl, 53);
   avl = remove_int(avl, 534);
-  avl = gpr_avl_add(avl, box(646), box(593));
-  avl = gpr_avl_add(avl, box(767), box(594));
-  avl = gpr_avl_add(avl, box(460), box(595));
-  avl = gpr_avl_add(avl, box(852), box(596));
-  avl = gpr_avl_add(avl, box(189), box(597));
+  avl = gpr_avl_add(avl, box(646), box(593), NULL);
+  avl = gpr_avl_add(avl, box(767), box(594), NULL);
+  avl = gpr_avl_add(avl, box(460), box(595), NULL);
+  avl = gpr_avl_add(avl, box(852), box(596), NULL);
+  avl = gpr_avl_add(avl, box(189), box(597), NULL);
   avl = remove_int(avl, 932);
   avl = remove_int(avl, 366);
   avl = remove_int(avl, 907);
-  avl = gpr_avl_add(avl, box(875), box(601));
-  avl = gpr_avl_add(avl, box(434), box(602));
-  avl = gpr_avl_add(avl, box(704), box(603));
-  avl = gpr_avl_add(avl, box(724), box(604));
-  avl = gpr_avl_add(avl, box(930), box(605));
-  avl = gpr_avl_add(avl, box(1000), box(606));
+  avl = gpr_avl_add(avl, box(875), box(601), NULL);
+  avl = gpr_avl_add(avl, box(434), box(602), NULL);
+  avl = gpr_avl_add(avl, box(704), box(603), NULL);
+  avl = gpr_avl_add(avl, box(724), box(604), NULL);
+  avl = gpr_avl_add(avl, box(930), box(605), NULL);
+  avl = gpr_avl_add(avl, box(1000), box(606), NULL);
   avl = remove_int(avl, 479);
-  avl = gpr_avl_add(avl, box(275), box(608));
+  avl = gpr_avl_add(avl, box(275), box(608), NULL);
   avl = remove_int(avl, 32);
-  avl = gpr_avl_add(avl, box(939), box(610));
+  avl = gpr_avl_add(avl, box(939), box(610), NULL);
   avl = remove_int(avl, 943);
   avl = remove_int(avl, 329);
-  avl = gpr_avl_add(avl, box(490), box(613));
+  avl = gpr_avl_add(avl, box(490), box(613), NULL);
   avl = remove_int(avl, 477);
   avl = remove_int(avl, 414);
   avl = remove_int(avl, 187);
   avl = remove_int(avl, 334);
-  avl = gpr_avl_add(avl, box(40), box(618));
+  avl = gpr_avl_add(avl, box(40), box(618), NULL);
   avl = remove_int(avl, 751);
-  avl = gpr_avl_add(avl, box(568), box(620));
-  avl = gpr_avl_add(avl, box(120), box(621));
-  avl = gpr_avl_add(avl, box(617), box(622));
-  avl = gpr_avl_add(avl, box(32), box(623));
+  avl = gpr_avl_add(avl, box(568), box(620), NULL);
+  avl = gpr_avl_add(avl, box(120), box(621), NULL);
+  avl = gpr_avl_add(avl, box(617), box(622), NULL);
+  avl = gpr_avl_add(avl, box(32), box(623), NULL);
   avl = remove_int(avl, 701);
-  avl = gpr_avl_add(avl, box(910), box(625));
+  avl = gpr_avl_add(avl, box(910), box(625), NULL);
   avl = remove_int(avl, 557);
   avl = remove_int(avl, 361);
   avl = remove_int(avl, 937);
   avl = remove_int(avl, 100);
   avl = remove_int(avl, 684);
-  avl = gpr_avl_add(avl, box(751), box(631));
+  avl = gpr_avl_add(avl, box(751), box(631), NULL);
   avl = remove_int(avl, 781);
   avl = remove_int(avl, 469);
   avl = remove_int(avl, 75);
   avl = remove_int(avl, 561);
-  avl = gpr_avl_add(avl, box(854), box(636));
+  avl = gpr_avl_add(avl, box(854), box(636), NULL);
   avl = remove_int(avl, 164);
   avl = remove_int(avl, 258);
   avl = remove_int(avl, 315);
   avl = remove_int(avl, 261);
-  avl = gpr_avl_add(avl, box(552), box(641));
-  avl = gpr_avl_add(avl, box(6), box(642));
-  avl = gpr_avl_add(avl, box(680), box(643));
+  avl = gpr_avl_add(avl, box(552), box(641), NULL);
+  avl = gpr_avl_add(avl, box(6), box(642), NULL);
+  avl = gpr_avl_add(avl, box(680), box(643), NULL);
   avl = remove_int(avl, 741);
   avl = remove_int(avl, 309);
   avl = remove_int(avl, 272);
-  avl = gpr_avl_add(avl, box(249), box(647));
+  avl = gpr_avl_add(avl, box(249), box(647), NULL);
   avl = remove_int(avl, 97);
   avl = remove_int(avl, 850);
-  avl = gpr_avl_add(avl, box(915), box(650));
-  avl = gpr_avl_add(avl, box(816), box(651));
-  avl = gpr_avl_add(avl, box(45), box(652));
-  avl = gpr_avl_add(avl, box(168), box(653));
+  avl = gpr_avl_add(avl, box(915), box(650), NULL);
+  avl = gpr_avl_add(avl, box(816), box(651), NULL);
+  avl = gpr_avl_add(avl, box(45), box(652), NULL);
+  avl = gpr_avl_add(avl, box(168), box(653), NULL);
   avl = remove_int(avl, 153);
   avl = remove_int(avl, 239);
-  avl = gpr_avl_add(avl, box(684), box(656));
-  avl = gpr_avl_add(avl, box(208), box(657));
-  avl = gpr_avl_add(avl, box(681), box(658));
-  avl = gpr_avl_add(avl, box(609), box(659));
-  avl = gpr_avl_add(avl, box(645), box(660));
+  avl = gpr_avl_add(avl, box(684), box(656), NULL);
+  avl = gpr_avl_add(avl, box(208), box(657), NULL);
+  avl = gpr_avl_add(avl, box(681), box(658), NULL);
+  avl = gpr_avl_add(avl, box(609), box(659), NULL);
+  avl = gpr_avl_add(avl, box(645), box(660), NULL);
   avl = remove_int(avl, 799);
-  avl = gpr_avl_add(avl, box(955), box(662));
-  avl = gpr_avl_add(avl, box(946), box(663));
-  avl = gpr_avl_add(avl, box(744), box(664));
-  avl = gpr_avl_add(avl, box(201), box(665));
-  avl = gpr_avl_add(avl, box(136), box(666));
+  avl = gpr_avl_add(avl, box(955), box(662), NULL);
+  avl = gpr_avl_add(avl, box(946), box(663), NULL);
+  avl = gpr_avl_add(avl, box(744), box(664), NULL);
+  avl = gpr_avl_add(avl, box(201), box(665), NULL);
+  avl = gpr_avl_add(avl, box(136), box(666), NULL);
   avl = remove_int(avl, 357);
-  avl = gpr_avl_add(avl, box(974), box(668));
+  avl = gpr_avl_add(avl, box(974), box(668), NULL);
   avl = remove_int(avl, 485);
-  avl = gpr_avl_add(avl, box(1009), box(670));
-  avl = gpr_avl_add(avl, box(517), box(671));
+  avl = gpr_avl_add(avl, box(1009), box(670), NULL);
+  avl = gpr_avl_add(avl, box(517), box(671), NULL);
   avl = remove_int(avl, 491);
-  avl = gpr_avl_add(avl, box(336), box(673));
-  avl = gpr_avl_add(avl, box(589), box(674));
+  avl = gpr_avl_add(avl, box(336), box(673), NULL);
+  avl = gpr_avl_add(avl, box(589), box(674), NULL);
   avl = remove_int(avl, 546);
   avl = remove_int(avl, 840);
   avl = remove_int(avl, 104);
   avl = remove_int(avl, 347);
-  avl = gpr_avl_add(avl, box(801), box(679));
+  avl = gpr_avl_add(avl, box(801), box(679), NULL);
   avl = remove_int(avl, 799);
   avl = remove_int(avl, 702);
   avl = remove_int(avl, 996);
   avl = remove_int(avl, 93);
-  avl = gpr_avl_add(avl, box(561), box(684));
-  avl = gpr_avl_add(avl, box(25), box(685));
+  avl = gpr_avl_add(avl, box(561), box(684), NULL);
+  avl = gpr_avl_add(avl, box(25), box(685), NULL);
   avl = remove_int(avl, 278);
-  avl = gpr_avl_add(avl, box(191), box(687));
+  avl = gpr_avl_add(avl, box(191), box(687), NULL);
   avl = remove_int(avl, 243);
   avl = remove_int(avl, 918);
   avl = remove_int(avl, 449);
-  avl = gpr_avl_add(avl, box(19), box(691));
-  avl = gpr_avl_add(avl, box(762), box(692));
-  avl = gpr_avl_add(avl, box(13), box(693));
-  avl = gpr_avl_add(avl, box(151), box(694));
-  avl = gpr_avl_add(avl, box(152), box(695));
-  avl = gpr_avl_add(avl, box(793), box(696));
+  avl = gpr_avl_add(avl, box(19), box(691), NULL);
+  avl = gpr_avl_add(avl, box(762), box(692), NULL);
+  avl = gpr_avl_add(avl, box(13), box(693), NULL);
+  avl = gpr_avl_add(avl, box(151), box(694), NULL);
+  avl = gpr_avl_add(avl, box(152), box(695), NULL);
+  avl = gpr_avl_add(avl, box(793), box(696), NULL);
   avl = remove_int(avl, 862);
   avl = remove_int(avl, 890);
-  avl = gpr_avl_add(avl, box(687), box(699));
-  avl = gpr_avl_add(avl, box(509), box(700));
-  avl = gpr_avl_add(avl, box(973), box(701));
+  avl = gpr_avl_add(avl, box(687), box(699), NULL);
+  avl = gpr_avl_add(avl, box(509), box(700), NULL);
+  avl = gpr_avl_add(avl, box(973), box(701), NULL);
   avl = remove_int(avl, 230);
-  avl = gpr_avl_add(avl, box(532), box(703));
+  avl = gpr_avl_add(avl, box(532), box(703), NULL);
   avl = remove_int(avl, 668);
-  avl = gpr_avl_add(avl, box(281), box(705));
-  avl = gpr_avl_add(avl, box(867), box(706));
-  avl = gpr_avl_add(avl, box(359), box(707));
+  avl = gpr_avl_add(avl, box(281), box(705), NULL);
+  avl = gpr_avl_add(avl, box(867), box(706), NULL);
+  avl = gpr_avl_add(avl, box(359), box(707), NULL);
   avl = remove_int(avl, 425);
-  avl = gpr_avl_add(avl, box(691), box(709));
-  avl = gpr_avl_add(avl, box(163), box(710));
-  avl = gpr_avl_add(avl, box(502), box(711));
+  avl = gpr_avl_add(avl, box(691), box(709), NULL);
+  avl = gpr_avl_add(avl, box(163), box(710), NULL);
+  avl = gpr_avl_add(avl, box(502), box(711), NULL);
   avl = remove_int(avl, 674);
-  avl = gpr_avl_add(avl, box(697), box(713));
+  avl = gpr_avl_add(avl, box(697), box(713), NULL);
   avl = remove_int(avl, 271);
-  avl = gpr_avl_add(avl, box(968), box(715));
-  avl = gpr_avl_add(avl, box(48), box(716));
+  avl = gpr_avl_add(avl, box(968), box(715), NULL);
+  avl = gpr_avl_add(avl, box(48), box(716), NULL);
   avl = remove_int(avl, 543);
-  avl = gpr_avl_add(avl, box(35), box(718));
-  avl = gpr_avl_add(avl, box(751), box(719));
-  avl = gpr_avl_add(avl, box(478), box(720));
+  avl = gpr_avl_add(avl, box(35), box(718), NULL);
+  avl = gpr_avl_add(avl, box(751), box(719), NULL);
+  avl = gpr_avl_add(avl, box(478), box(720), NULL);
   avl = remove_int(avl, 797);
   avl = remove_int(avl, 309);
-  avl = gpr_avl_add(avl, box(927), box(723));
+  avl = gpr_avl_add(avl, box(927), box(723), NULL);
   avl = remove_int(avl, 504);
-  avl = gpr_avl_add(avl, box(286), box(725));
-  avl = gpr_avl_add(avl, box(413), box(726));
-  avl = gpr_avl_add(avl, box(599), box(727));
+  avl = gpr_avl_add(avl, box(286), box(725), NULL);
+  avl = gpr_avl_add(avl, box(413), box(726), NULL);
+  avl = gpr_avl_add(avl, box(599), box(727), NULL);
   avl = remove_int(avl, 105);
   avl = remove_int(avl, 605);
-  avl = gpr_avl_add(avl, box(632), box(730));
-  avl = gpr_avl_add(avl, box(133), box(731));
+  avl = gpr_avl_add(avl, box(632), box(730), NULL);
+  avl = gpr_avl_add(avl, box(133), box(731), NULL);
   avl = remove_int(avl, 443);
-  avl = gpr_avl_add(avl, box(958), box(733));
-  avl = gpr_avl_add(avl, box(729), box(734));
+  avl = gpr_avl_add(avl, box(958), box(733), NULL);
+  avl = gpr_avl_add(avl, box(729), box(734), NULL);
   avl = remove_int(avl, 158);
-  avl = gpr_avl_add(avl, box(694), box(736));
-  avl = gpr_avl_add(avl, box(505), box(737));
+  avl = gpr_avl_add(avl, box(694), box(736), NULL);
+  avl = gpr_avl_add(avl, box(505), box(737), NULL);
   avl = remove_int(avl, 63);
   avl = remove_int(avl, 714);
-  avl = gpr_avl_add(avl, box(1002), box(740));
+  avl = gpr_avl_add(avl, box(1002), box(740), NULL);
   avl = remove_int(avl, 211);
-  avl = gpr_avl_add(avl, box(765), box(742));
-  avl = gpr_avl_add(avl, box(455), box(743));
+  avl = gpr_avl_add(avl, box(765), box(742), NULL);
+  avl = gpr_avl_add(avl, box(455), box(743), NULL);
   avl = remove_int(avl, 59);
   avl = remove_int(avl, 224);
-  avl = gpr_avl_add(avl, box(586), box(746));
-  avl = gpr_avl_add(avl, box(348), box(747));
+  avl = gpr_avl_add(avl, box(586), box(746), NULL);
+  avl = gpr_avl_add(avl, box(348), box(747), NULL);
   avl = remove_int(avl, 10);
   avl = remove_int(avl, 484);
-  avl = gpr_avl_add(avl, box(968), box(750));
-  avl = gpr_avl_add(avl, box(923), box(751));
+  avl = gpr_avl_add(avl, box(968), box(750), NULL);
+  avl = gpr_avl_add(avl, box(923), box(751), NULL);
   avl = remove_int(avl, 573);
   avl = remove_int(avl, 617);
-  avl = gpr_avl_add(avl, box(812), box(754));
-  avl = gpr_avl_add(avl, box(179), box(755));
+  avl = gpr_avl_add(avl, box(812), box(754), NULL);
+  avl = gpr_avl_add(avl, box(179), box(755), NULL);
   avl = remove_int(avl, 284);
   avl = remove_int(avl, 157);
   avl = remove_int(avl, 177);
   avl = remove_int(avl, 896);
-  avl = gpr_avl_add(avl, box(649), box(760));
-  avl = gpr_avl_add(avl, box(927), box(761));
-  avl = gpr_avl_add(avl, box(454), box(762));
-  avl = gpr_avl_add(avl, box(217), box(763));
+  avl = gpr_avl_add(avl, box(649), box(760), NULL);
+  avl = gpr_avl_add(avl, box(927), box(761), NULL);
+  avl = gpr_avl_add(avl, box(454), box(762), NULL);
+  avl = gpr_avl_add(avl, box(217), box(763), NULL);
   avl = remove_int(avl, 534);
-  avl = gpr_avl_add(avl, box(180), box(765));
-  avl = gpr_avl_add(avl, box(319), box(766));
+  avl = gpr_avl_add(avl, box(180), box(765), NULL);
+  avl = gpr_avl_add(avl, box(319), box(766), NULL);
   avl = remove_int(avl, 92);
-  avl = gpr_avl_add(avl, box(483), box(768));
+  avl = gpr_avl_add(avl, box(483), box(768), NULL);
   avl = remove_int(avl, 504);
   avl = remove_int(avl, 1017);
   avl = remove_int(avl, 37);
   avl = remove_int(avl, 50);
-  avl = gpr_avl_add(avl, box(302), box(773));
+  avl = gpr_avl_add(avl, box(302), box(773), NULL);
   avl = remove_int(avl, 807);
-  avl = gpr_avl_add(avl, box(463), box(775));
-  avl = gpr_avl_add(avl, box(271), box(776));
-  avl = gpr_avl_add(avl, box(644), box(777));
+  avl = gpr_avl_add(avl, box(463), box(775), NULL);
+  avl = gpr_avl_add(avl, box(271), box(776), NULL);
+  avl = gpr_avl_add(avl, box(644), box(777), NULL);
   avl = remove_int(avl, 618);
-  avl = gpr_avl_add(avl, box(166), box(779));
-  avl = gpr_avl_add(avl, box(538), box(780));
+  avl = gpr_avl_add(avl, box(166), box(779), NULL);
+  avl = gpr_avl_add(avl, box(538), box(780), NULL);
   avl = remove_int(avl, 606);
-  avl = gpr_avl_add(avl, box(425), box(782));
+  avl = gpr_avl_add(avl, box(425), box(782), NULL);
   avl = remove_int(avl, 725);
   avl = remove_int(avl, 383);
-  avl = gpr_avl_add(avl, box(155), box(785));
+  avl = gpr_avl_add(avl, box(155), box(785), NULL);
   avl = remove_int(avl, 889);
-  avl = gpr_avl_add(avl, box(653), box(787));
+  avl = gpr_avl_add(avl, box(653), box(787), NULL);
   avl = remove_int(avl, 386);
-  avl = gpr_avl_add(avl, box(142), box(789));
+  avl = gpr_avl_add(avl, box(142), box(789), NULL);
   avl = remove_int(avl, 107);
   avl = remove_int(avl, 603);
   avl = remove_int(avl, 971);
-  avl = gpr_avl_add(avl, box(80), box(793));
-  avl = gpr_avl_add(avl, box(61), box(794));
-  avl = gpr_avl_add(avl, box(693), box(795));
-  avl = gpr_avl_add(avl, box(592), box(796));
-  avl = gpr_avl_add(avl, box(433), box(797));
-  avl = gpr_avl_add(avl, box(973), box(798));
+  avl = gpr_avl_add(avl, box(80), box(793), NULL);
+  avl = gpr_avl_add(avl, box(61), box(794), NULL);
+  avl = gpr_avl_add(avl, box(693), box(795), NULL);
+  avl = gpr_avl_add(avl, box(592), box(796), NULL);
+  avl = gpr_avl_add(avl, box(433), box(797), NULL);
+  avl = gpr_avl_add(avl, box(973), box(798), NULL);
   avl = remove_int(avl, 901);
   avl = remove_int(avl, 340);
   avl = remove_int(avl, 709);
-  avl = gpr_avl_add(avl, box(224), box(802));
+  avl = gpr_avl_add(avl, box(224), box(802), NULL);
   avl = remove_int(avl, 120);
   avl = remove_int(avl, 271);
-  avl = gpr_avl_add(avl, box(780), box(805));
-  avl = gpr_avl_add(avl, box(867), box(806));
-  avl = gpr_avl_add(avl, box(756), box(807));
-  avl = gpr_avl_add(avl, box(583), box(808));
-  avl = gpr_avl_add(avl, box(356), box(809));
-  avl = gpr_avl_add(avl, box(58), box(810));
+  avl = gpr_avl_add(avl, box(780), box(805), NULL);
+  avl = gpr_avl_add(avl, box(867), box(806), NULL);
+  avl = gpr_avl_add(avl, box(756), box(807), NULL);
+  avl = gpr_avl_add(avl, box(583), box(808), NULL);
+  avl = gpr_avl_add(avl, box(356), box(809), NULL);
+  avl = gpr_avl_add(avl, box(58), box(810), NULL);
   avl = remove_int(avl, 219);
-  avl = gpr_avl_add(avl, box(301), box(812));
+  avl = gpr_avl_add(avl, box(301), box(812), NULL);
   avl = remove_int(avl, 643);
   avl = remove_int(avl, 787);
   avl = remove_int(avl, 583);
@@ -1063,72 +1065,72 @@ static void test_badcase2(void) {
   avl = remove_int(avl, 608);
   avl = remove_int(avl, 363);
   avl = remove_int(avl, 690);
-  avl = gpr_avl_add(avl, box(233), box(821));
-  avl = gpr_avl_add(avl, box(479), box(822));
-  avl = gpr_avl_add(avl, box(323), box(823));
-  avl = gpr_avl_add(avl, box(802), box(824));
+  avl = gpr_avl_add(avl, box(233), box(821), NULL);
+  avl = gpr_avl_add(avl, box(479), box(822), NULL);
+  avl = gpr_avl_add(avl, box(323), box(823), NULL);
+  avl = gpr_avl_add(avl, box(802), box(824), NULL);
   avl = remove_int(avl, 682);
   avl = remove_int(avl, 705);
   avl = remove_int(avl, 487);
-  avl = gpr_avl_add(avl, box(530), box(828));
-  avl = gpr_avl_add(avl, box(232), box(829));
+  avl = gpr_avl_add(avl, box(530), box(828), NULL);
+  avl = gpr_avl_add(avl, box(232), box(829), NULL);
   avl = remove_int(avl, 627);
-  avl = gpr_avl_add(avl, box(396), box(831));
-  avl = gpr_avl_add(avl, box(61), box(832));
-  avl = gpr_avl_add(avl, box(932), box(833));
-  avl = gpr_avl_add(avl, box(108), box(834));
-  avl = gpr_avl_add(avl, box(524), box(835));
+  avl = gpr_avl_add(avl, box(396), box(831), NULL);
+  avl = gpr_avl_add(avl, box(61), box(832), NULL);
+  avl = gpr_avl_add(avl, box(932), box(833), NULL);
+  avl = gpr_avl_add(avl, box(108), box(834), NULL);
+  avl = gpr_avl_add(avl, box(524), box(835), NULL);
   avl = remove_int(avl, 390);
   avl = remove_int(avl, 307);
-  avl = gpr_avl_add(avl, box(722), box(838));
-  avl = gpr_avl_add(avl, box(907), box(839));
+  avl = gpr_avl_add(avl, box(722), box(838), NULL);
+  avl = gpr_avl_add(avl, box(907), box(839), NULL);
   avl = remove_int(avl, 286);
   avl = remove_int(avl, 337);
   avl = remove_int(avl, 443);
-  avl = gpr_avl_add(avl, box(973), box(843));
+  avl = gpr_avl_add(avl, box(973), box(843), NULL);
   avl = remove_int(avl, 930);
   avl = remove_int(avl, 242);
-  avl = gpr_avl_add(avl, box(997), box(846));
-  avl = gpr_avl_add(avl, box(689), box(847));
+  avl = gpr_avl_add(avl, box(997), box(846), NULL);
+  avl = gpr_avl_add(avl, box(689), box(847), NULL);
   avl = remove_int(avl, 318);
-  avl = gpr_avl_add(avl, box(703), box(849));
-  avl = gpr_avl_add(avl, box(868), box(850));
-  avl = gpr_avl_add(avl, box(200), box(851));
-  avl = gpr_avl_add(avl, box(960), box(852));
-  avl = gpr_avl_add(avl, box(80), box(853));
+  avl = gpr_avl_add(avl, box(703), box(849), NULL);
+  avl = gpr_avl_add(avl, box(868), box(850), NULL);
+  avl = gpr_avl_add(avl, box(200), box(851), NULL);
+  avl = gpr_avl_add(avl, box(960), box(852), NULL);
+  avl = gpr_avl_add(avl, box(80), box(853), NULL);
   avl = remove_int(avl, 113);
-  avl = gpr_avl_add(avl, box(135), box(855));
+  avl = gpr_avl_add(avl, box(135), box(855), NULL);
   avl = remove_int(avl, 529);
-  avl = gpr_avl_add(avl, box(366), box(857));
+  avl = gpr_avl_add(avl, box(366), box(857), NULL);
   avl = remove_int(avl, 272);
-  avl = gpr_avl_add(avl, box(921), box(859));
+  avl = gpr_avl_add(avl, box(921), box(859), NULL);
   avl = remove_int(avl, 497);
-  avl = gpr_avl_add(avl, box(712), box(861));
+  avl = gpr_avl_add(avl, box(712), box(861), NULL);
   avl = remove_int(avl, 777);
   avl = remove_int(avl, 505);
   avl = remove_int(avl, 974);
   avl = remove_int(avl, 497);
-  avl = gpr_avl_add(avl, box(388), box(866));
-  avl = gpr_avl_add(avl, box(29), box(867));
-  avl = gpr_avl_add(avl, box(180), box(868));
-  avl = gpr_avl_add(avl, box(983), box(869));
-  avl = gpr_avl_add(avl, box(72), box(870));
-  avl = gpr_avl_add(avl, box(693), box(871));
-  avl = gpr_avl_add(avl, box(567), box(872));
+  avl = gpr_avl_add(avl, box(388), box(866), NULL);
+  avl = gpr_avl_add(avl, box(29), box(867), NULL);
+  avl = gpr_avl_add(avl, box(180), box(868), NULL);
+  avl = gpr_avl_add(avl, box(983), box(869), NULL);
+  avl = gpr_avl_add(avl, box(72), box(870), NULL);
+  avl = gpr_avl_add(avl, box(693), box(871), NULL);
+  avl = gpr_avl_add(avl, box(567), box(872), NULL);
   avl = remove_int(avl, 549);
   avl = remove_int(avl, 351);
-  avl = gpr_avl_add(avl, box(1019), box(875));
+  avl = gpr_avl_add(avl, box(1019), box(875), NULL);
   avl = remove_int(avl, 585);
   avl = remove_int(avl, 294);
   avl = remove_int(avl, 61);
-  avl = gpr_avl_add(avl, box(409), box(879));
-  avl = gpr_avl_add(avl, box(984), box(880));
-  avl = gpr_avl_add(avl, box(830), box(881));
+  avl = gpr_avl_add(avl, box(409), box(879), NULL);
+  avl = gpr_avl_add(avl, box(984), box(880), NULL);
+  avl = gpr_avl_add(avl, box(830), box(881), NULL);
   avl = remove_int(avl, 579);
-  avl = gpr_avl_add(avl, box(672), box(883));
+  avl = gpr_avl_add(avl, box(672), box(883), NULL);
   avl = remove_int(avl, 968);
 
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_badcase3(void) {
@@ -1138,191 +1140,191 @@ static void test_badcase3(void) {
 
   avl = gpr_avl_create(&int_int_vtable);
   avl = remove_int(avl, 624);
-  avl = gpr_avl_add(avl, box(59), box(2));
-  avl = gpr_avl_add(avl, box(494), box(3));
-  avl = gpr_avl_add(avl, box(226), box(4));
+  avl = gpr_avl_add(avl, box(59), box(2), NULL);
+  avl = gpr_avl_add(avl, box(494), box(3), NULL);
+  avl = gpr_avl_add(avl, box(226), box(4), NULL);
   avl = remove_int(avl, 524);
-  avl = gpr_avl_add(avl, box(540), box(6));
+  avl = gpr_avl_add(avl, box(540), box(6), NULL);
   avl = remove_int(avl, 1008);
-  avl = gpr_avl_add(avl, box(502), box(8));
+  avl = gpr_avl_add(avl, box(502), box(8), NULL);
   avl = remove_int(avl, 267);
   avl = remove_int(avl, 764);
   avl = remove_int(avl, 443);
-  avl = gpr_avl_add(avl, box(8), box(12));
+  avl = gpr_avl_add(avl, box(8), box(12), NULL);
   avl = remove_int(avl, 291);
   avl = remove_int(avl, 796);
   avl = remove_int(avl, 1002);
-  avl = gpr_avl_add(avl, box(778), box(16));
+  avl = gpr_avl_add(avl, box(778), box(16), NULL);
   avl = remove_int(avl, 621);
   avl = remove_int(avl, 891);
   avl = remove_int(avl, 880);
-  avl = gpr_avl_add(avl, box(197), box(20));
-  avl = gpr_avl_add(avl, box(441), box(21));
-  avl = gpr_avl_add(avl, box(719), box(22));
+  avl = gpr_avl_add(avl, box(197), box(20), NULL);
+  avl = gpr_avl_add(avl, box(441), box(21), NULL);
+  avl = gpr_avl_add(avl, box(719), box(22), NULL);
   avl = remove_int(avl, 109);
-  avl = gpr_avl_add(avl, box(458), box(24));
+  avl = gpr_avl_add(avl, box(458), box(24), NULL);
   avl = remove_int(avl, 86);
-  avl = gpr_avl_add(avl, box(897), box(26));
-  avl = gpr_avl_add(avl, box(997), box(27));
+  avl = gpr_avl_add(avl, box(897), box(26), NULL);
+  avl = gpr_avl_add(avl, box(997), box(27), NULL);
   avl = remove_int(avl, 235);
   avl = remove_int(avl, 425);
   avl = remove_int(avl, 186);
-  avl = gpr_avl_add(avl, box(887), box(31));
-  avl = gpr_avl_add(avl, box(1005), box(32));
-  avl = gpr_avl_add(avl, box(778), box(33));
-  avl = gpr_avl_add(avl, box(575), box(34));
+  avl = gpr_avl_add(avl, box(887), box(31), NULL);
+  avl = gpr_avl_add(avl, box(1005), box(32), NULL);
+  avl = gpr_avl_add(avl, box(778), box(33), NULL);
+  avl = gpr_avl_add(avl, box(575), box(34), NULL);
   avl = remove_int(avl, 966);
   avl = remove_int(avl, 1015);
-  avl = gpr_avl_add(avl, box(486), box(37));
-  avl = gpr_avl_add(avl, box(809), box(38));
-  avl = gpr_avl_add(avl, box(907), box(39));
-  avl = gpr_avl_add(avl, box(971), box(40));
+  avl = gpr_avl_add(avl, box(486), box(37), NULL);
+  avl = gpr_avl_add(avl, box(809), box(38), NULL);
+  avl = gpr_avl_add(avl, box(907), box(39), NULL);
+  avl = gpr_avl_add(avl, box(971), box(40), NULL);
   avl = remove_int(avl, 441);
   avl = remove_int(avl, 498);
-  avl = gpr_avl_add(avl, box(727), box(43));
+  avl = gpr_avl_add(avl, box(727), box(43), NULL);
   avl = remove_int(avl, 679);
   avl = remove_int(avl, 740);
   avl = remove_int(avl, 532);
-  avl = gpr_avl_add(avl, box(805), box(47));
+  avl = gpr_avl_add(avl, box(805), box(47), NULL);
   avl = remove_int(avl, 64);
-  avl = gpr_avl_add(avl, box(362), box(49));
-  avl = gpr_avl_add(avl, box(170), box(50));
-  avl = gpr_avl_add(avl, box(389), box(51));
-  avl = gpr_avl_add(avl, box(689), box(52));
+  avl = gpr_avl_add(avl, box(362), box(49), NULL);
+  avl = gpr_avl_add(avl, box(170), box(50), NULL);
+  avl = gpr_avl_add(avl, box(389), box(51), NULL);
+  avl = gpr_avl_add(avl, box(689), box(52), NULL);
   avl = remove_int(avl, 871);
-  avl = gpr_avl_add(avl, box(447), box(54));
+  avl = gpr_avl_add(avl, box(447), box(54), NULL);
   avl = remove_int(avl, 718);
-  avl = gpr_avl_add(avl, box(724), box(56));
+  avl = gpr_avl_add(avl, box(724), box(56), NULL);
   avl = remove_int(avl, 215);
-  avl = gpr_avl_add(avl, box(550), box(58));
+  avl = gpr_avl_add(avl, box(550), box(58), NULL);
   avl = remove_int(avl, 932);
-  avl = gpr_avl_add(avl, box(47), box(60));
+  avl = gpr_avl_add(avl, box(47), box(60), NULL);
   avl = remove_int(avl, 46);
   avl = remove_int(avl, 229);
-  avl = gpr_avl_add(avl, box(68), box(63));
-  avl = gpr_avl_add(avl, box(387), box(64));
+  avl = gpr_avl_add(avl, box(68), box(63), NULL);
+  avl = gpr_avl_add(avl, box(387), box(64), NULL);
   avl = remove_int(avl, 933);
   avl = remove_int(avl, 736);
   avl = remove_int(avl, 719);
-  avl = gpr_avl_add(avl, box(150), box(68));
+  avl = gpr_avl_add(avl, box(150), box(68), NULL);
   avl = remove_int(avl, 875);
   avl = remove_int(avl, 298);
-  avl = gpr_avl_add(avl, box(991), box(71));
+  avl = gpr_avl_add(avl, box(991), box(71), NULL);
   avl = remove_int(avl, 705);
-  avl = gpr_avl_add(avl, box(197), box(73));
-  avl = gpr_avl_add(avl, box(101), box(74));
+  avl = gpr_avl_add(avl, box(197), box(73), NULL);
+  avl = gpr_avl_add(avl, box(101), box(74), NULL);
   avl = remove_int(avl, 436);
-  avl = gpr_avl_add(avl, box(755), box(76));
-  avl = gpr_avl_add(avl, box(727), box(77));
+  avl = gpr_avl_add(avl, box(755), box(76), NULL);
+  avl = gpr_avl_add(avl, box(727), box(77), NULL);
   avl = remove_int(avl, 309);
   avl = remove_int(avl, 253);
-  avl = gpr_avl_add(avl, box(203), box(80));
+  avl = gpr_avl_add(avl, box(203), box(80), NULL);
   avl = remove_int(avl, 231);
-  avl = gpr_avl_add(avl, box(461), box(82));
+  avl = gpr_avl_add(avl, box(461), box(82), NULL);
   avl = remove_int(avl, 316);
   avl = remove_int(avl, 493);
-  avl = gpr_avl_add(avl, box(184), box(85));
+  avl = gpr_avl_add(avl, box(184), box(85), NULL);
   avl = remove_int(avl, 737);
-  avl = gpr_avl_add(avl, box(790), box(87));
-  avl = gpr_avl_add(avl, box(335), box(88));
+  avl = gpr_avl_add(avl, box(790), box(87), NULL);
+  avl = gpr_avl_add(avl, box(335), box(88), NULL);
   avl = remove_int(avl, 649);
-  avl = gpr_avl_add(avl, box(69), box(90));
+  avl = gpr_avl_add(avl, box(69), box(90), NULL);
   avl = remove_int(avl, 585);
   avl = remove_int(avl, 543);
-  avl = gpr_avl_add(avl, box(784), box(93));
-  avl = gpr_avl_add(avl, box(60), box(94));
-  avl = gpr_avl_add(avl, box(525), box(95));
-  avl = gpr_avl_add(avl, box(177), box(96));
-  avl = gpr_avl_add(avl, box(178), box(97));
-  avl = gpr_avl_add(avl, box(683), box(98));
-  avl = gpr_avl_add(avl, box(226), box(99));
-  avl = gpr_avl_add(avl, box(662), box(100));
+  avl = gpr_avl_add(avl, box(784), box(93), NULL);
+  avl = gpr_avl_add(avl, box(60), box(94), NULL);
+  avl = gpr_avl_add(avl, box(525), box(95), NULL);
+  avl = gpr_avl_add(avl, box(177), box(96), NULL);
+  avl = gpr_avl_add(avl, box(178), box(97), NULL);
+  avl = gpr_avl_add(avl, box(683), box(98), NULL);
+  avl = gpr_avl_add(avl, box(226), box(99), NULL);
+  avl = gpr_avl_add(avl, box(662), box(100), NULL);
   avl = remove_int(avl, 944);
-  avl = gpr_avl_add(avl, box(562), box(102));
-  avl = gpr_avl_add(avl, box(793), box(103));
+  avl = gpr_avl_add(avl, box(562), box(102), NULL);
+  avl = gpr_avl_add(avl, box(793), box(103), NULL);
   avl = remove_int(avl, 673);
-  avl = gpr_avl_add(avl, box(310), box(105));
+  avl = gpr_avl_add(avl, box(310), box(105), NULL);
   avl = remove_int(avl, 479);
   avl = remove_int(avl, 543);
   avl = remove_int(avl, 159);
   avl = remove_int(avl, 850);
-  avl = gpr_avl_add(avl, box(318), box(110));
-  avl = gpr_avl_add(avl, box(483), box(111));
-  avl = gpr_avl_add(avl, box(84), box(112));
+  avl = gpr_avl_add(avl, box(318), box(110), NULL);
+  avl = gpr_avl_add(avl, box(483), box(111), NULL);
+  avl = gpr_avl_add(avl, box(84), box(112), NULL);
   avl = remove_int(avl, 109);
-  avl = gpr_avl_add(avl, box(132), box(114));
-  avl = gpr_avl_add(avl, box(920), box(115));
+  avl = gpr_avl_add(avl, box(132), box(114), NULL);
+  avl = gpr_avl_add(avl, box(920), box(115), NULL);
   avl = remove_int(avl, 746);
-  avl = gpr_avl_add(avl, box(145), box(117));
-  avl = gpr_avl_add(avl, box(526), box(118));
+  avl = gpr_avl_add(avl, box(145), box(117), NULL);
+  avl = gpr_avl_add(avl, box(526), box(118), NULL);
   avl = remove_int(avl, 158);
-  avl = gpr_avl_add(avl, box(332), box(120));
-  avl = gpr_avl_add(avl, box(918), box(121));
+  avl = gpr_avl_add(avl, box(332), box(120), NULL);
+  avl = gpr_avl_add(avl, box(918), box(121), NULL);
   avl = remove_int(avl, 339);
-  avl = gpr_avl_add(avl, box(809), box(123));
-  avl = gpr_avl_add(avl, box(742), box(124));
-  avl = gpr_avl_add(avl, box(718), box(125));
+  avl = gpr_avl_add(avl, box(809), box(123), NULL);
+  avl = gpr_avl_add(avl, box(742), box(124), NULL);
+  avl = gpr_avl_add(avl, box(718), box(125), NULL);
   avl = remove_int(avl, 988);
   avl = remove_int(avl, 531);
   avl = remove_int(avl, 840);
-  avl = gpr_avl_add(avl, box(816), box(129));
-  avl = gpr_avl_add(avl, box(976), box(130));
+  avl = gpr_avl_add(avl, box(816), box(129), NULL);
+  avl = gpr_avl_add(avl, box(976), box(130), NULL);
   avl = remove_int(avl, 743);
   avl = remove_int(avl, 528);
   avl = remove_int(avl, 982);
-  avl = gpr_avl_add(avl, box(803), box(134));
-  avl = gpr_avl_add(avl, box(205), box(135));
-  avl = gpr_avl_add(avl, box(584), box(136));
+  avl = gpr_avl_add(avl, box(803), box(134), NULL);
+  avl = gpr_avl_add(avl, box(205), box(135), NULL);
+  avl = gpr_avl_add(avl, box(584), box(136), NULL);
   avl = remove_int(avl, 923);
   avl = remove_int(avl, 538);
   avl = remove_int(avl, 398);
   avl = remove_int(avl, 320);
   avl = remove_int(avl, 292);
-  avl = gpr_avl_add(avl, box(270), box(142));
-  avl = gpr_avl_add(avl, box(333), box(143));
+  avl = gpr_avl_add(avl, box(270), box(142), NULL);
+  avl = gpr_avl_add(avl, box(333), box(143), NULL);
   avl = remove_int(avl, 439);
-  avl = gpr_avl_add(avl, box(35), box(145));
-  avl = gpr_avl_add(avl, box(837), box(146));
+  avl = gpr_avl_add(avl, box(35), box(145), NULL);
+  avl = gpr_avl_add(avl, box(837), box(146), NULL);
   avl = remove_int(avl, 65);
   avl = remove_int(avl, 642);
   avl = remove_int(avl, 371);
   avl = remove_int(avl, 140);
   avl = remove_int(avl, 533);
   avl = remove_int(avl, 676);
-  avl = gpr_avl_add(avl, box(624), box(153));
-  avl = gpr_avl_add(avl, box(116), box(154));
-  avl = gpr_avl_add(avl, box(446), box(155));
+  avl = gpr_avl_add(avl, box(624), box(153), NULL);
+  avl = gpr_avl_add(avl, box(116), box(154), NULL);
+  avl = gpr_avl_add(avl, box(446), box(155), NULL);
   avl = remove_int(avl, 91);
   avl = remove_int(avl, 721);
   avl = remove_int(avl, 537);
-  avl = gpr_avl_add(avl, box(448), box(159));
+  avl = gpr_avl_add(avl, box(448), box(159), NULL);
   avl = remove_int(avl, 155);
   avl = remove_int(avl, 344);
   avl = remove_int(avl, 237);
-  avl = gpr_avl_add(avl, box(309), box(163));
-  avl = gpr_avl_add(avl, box(434), box(164));
-  avl = gpr_avl_add(avl, box(277), box(165));
+  avl = gpr_avl_add(avl, box(309), box(163), NULL);
+  avl = gpr_avl_add(avl, box(434), box(164), NULL);
+  avl = gpr_avl_add(avl, box(277), box(165), NULL);
   avl = remove_int(avl, 233);
-  avl = gpr_avl_add(avl, box(275), box(167));
-  avl = gpr_avl_add(avl, box(218), box(168));
-  avl = gpr_avl_add(avl, box(76), box(169));
-  avl = gpr_avl_add(avl, box(898), box(170));
+  avl = gpr_avl_add(avl, box(275), box(167), NULL);
+  avl = gpr_avl_add(avl, box(218), box(168), NULL);
+  avl = gpr_avl_add(avl, box(76), box(169), NULL);
+  avl = gpr_avl_add(avl, box(898), box(170), NULL);
   avl = remove_int(avl, 771);
-  avl = gpr_avl_add(avl, box(237), box(172));
+  avl = gpr_avl_add(avl, box(237), box(172), NULL);
   avl = remove_int(avl, 327);
-  avl = gpr_avl_add(avl, box(499), box(174));
+  avl = gpr_avl_add(avl, box(499), box(174), NULL);
   avl = remove_int(avl, 727);
   avl = remove_int(avl, 234);
   avl = remove_int(avl, 623);
   avl = remove_int(avl, 458);
   avl = remove_int(avl, 326);
   avl = remove_int(avl, 589);
-  avl = gpr_avl_add(avl, box(442), box(181));
+  avl = gpr_avl_add(avl, box(442), box(181), NULL);
   avl = remove_int(avl, 389);
-  avl = gpr_avl_add(avl, box(708), box(183));
-  avl = gpr_avl_add(avl, box(594), box(184));
-  avl = gpr_avl_add(avl, box(942), box(185));
-  avl = gpr_avl_add(avl, box(282), box(186));
+  avl = gpr_avl_add(avl, box(708), box(183), NULL);
+  avl = gpr_avl_add(avl, box(594), box(184), NULL);
+  avl = gpr_avl_add(avl, box(942), box(185), NULL);
+  avl = gpr_avl_add(avl, box(282), box(186), NULL);
   avl = remove_int(avl, 434);
   avl = remove_int(avl, 134);
   avl = remove_int(avl, 270);
@@ -1332,125 +1334,125 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 193);
   avl = remove_int(avl, 797);
   avl = remove_int(avl, 347);
-  avl = gpr_avl_add(avl, box(99), box(196));
-  avl = gpr_avl_add(avl, box(161), box(197));
+  avl = gpr_avl_add(avl, box(99), box(196), NULL);
+  avl = gpr_avl_add(avl, box(161), box(197), NULL);
   avl = remove_int(avl, 484);
-  avl = gpr_avl_add(avl, box(72), box(199));
+  avl = gpr_avl_add(avl, box(72), box(199), NULL);
   avl = remove_int(avl, 629);
-  avl = gpr_avl_add(avl, box(522), box(201));
+  avl = gpr_avl_add(avl, box(522), box(201), NULL);
   avl = remove_int(avl, 679);
-  avl = gpr_avl_add(avl, box(407), box(203));
+  avl = gpr_avl_add(avl, box(407), box(203), NULL);
   avl = remove_int(avl, 693);
-  avl = gpr_avl_add(avl, box(424), box(205));
-  avl = gpr_avl_add(avl, box(651), box(206));
-  avl = gpr_avl_add(avl, box(927), box(207));
+  avl = gpr_avl_add(avl, box(424), box(205), NULL);
+  avl = gpr_avl_add(avl, box(651), box(206), NULL);
+  avl = gpr_avl_add(avl, box(927), box(207), NULL);
   avl = remove_int(avl, 553);
-  avl = gpr_avl_add(avl, box(128), box(209));
-  avl = gpr_avl_add(avl, box(616), box(210));
-  avl = gpr_avl_add(avl, box(690), box(211));
+  avl = gpr_avl_add(avl, box(128), box(209), NULL);
+  avl = gpr_avl_add(avl, box(616), box(210), NULL);
+  avl = gpr_avl_add(avl, box(690), box(211), NULL);
   avl = remove_int(avl, 241);
   avl = remove_int(avl, 179);
-  avl = gpr_avl_add(avl, box(697), box(214));
+  avl = gpr_avl_add(avl, box(697), box(214), NULL);
   avl = remove_int(avl, 779);
-  avl = gpr_avl_add(avl, box(241), box(216));
+  avl = gpr_avl_add(avl, box(241), box(216), NULL);
   avl = remove_int(avl, 190);
   avl = remove_int(avl, 210);
-  avl = gpr_avl_add(avl, box(711), box(219));
+  avl = gpr_avl_add(avl, box(711), box(219), NULL);
   avl = remove_int(avl, 251);
   avl = remove_int(avl, 61);
-  avl = gpr_avl_add(avl, box(800), box(222));
+  avl = gpr_avl_add(avl, box(800), box(222), NULL);
   avl = remove_int(avl, 551);
-  avl = gpr_avl_add(avl, box(61), box(224));
-  avl = gpr_avl_add(avl, box(656), box(225));
+  avl = gpr_avl_add(avl, box(61), box(224), NULL);
+  avl = gpr_avl_add(avl, box(656), box(225), NULL);
   avl = remove_int(avl, 130);
   avl = remove_int(avl, 368);
   avl = remove_int(avl, 150);
   avl = remove_int(avl, 73);
-  avl = gpr_avl_add(avl, box(799), box(230));
-  avl = gpr_avl_add(avl, box(125), box(231));
+  avl = gpr_avl_add(avl, box(799), box(230), NULL);
+  avl = gpr_avl_add(avl, box(125), box(231), NULL);
   avl = remove_int(avl, 107);
-  avl = gpr_avl_add(avl, box(938), box(233));
-  avl = gpr_avl_add(avl, box(914), box(234));
-  avl = gpr_avl_add(avl, box(197), box(235));
+  avl = gpr_avl_add(avl, box(938), box(233), NULL);
+  avl = gpr_avl_add(avl, box(914), box(234), NULL);
+  avl = gpr_avl_add(avl, box(197), box(235), NULL);
   avl = remove_int(avl, 736);
-  avl = gpr_avl_add(avl, box(20), box(237));
+  avl = gpr_avl_add(avl, box(20), box(237), NULL);
   avl = remove_int(avl, 224);
   avl = remove_int(avl, 841);
-  avl = gpr_avl_add(avl, box(226), box(240));
+  avl = gpr_avl_add(avl, box(226), box(240), NULL);
   avl = remove_int(avl, 963);
   avl = remove_int(avl, 796);
   avl = remove_int(avl, 728);
-  avl = gpr_avl_add(avl, box(855), box(244));
-  avl = gpr_avl_add(avl, box(769), box(245));
-  avl = gpr_avl_add(avl, box(631), box(246));
+  avl = gpr_avl_add(avl, box(855), box(244), NULL);
+  avl = gpr_avl_add(avl, box(769), box(245), NULL);
+  avl = gpr_avl_add(avl, box(631), box(246), NULL);
   avl = remove_int(avl, 648);
-  avl = gpr_avl_add(avl, box(187), box(248));
-  avl = gpr_avl_add(avl, box(31), box(249));
+  avl = gpr_avl_add(avl, box(187), box(248), NULL);
+  avl = gpr_avl_add(avl, box(31), box(249), NULL);
   avl = remove_int(avl, 163);
-  avl = gpr_avl_add(avl, box(218), box(251));
-  avl = gpr_avl_add(avl, box(488), box(252));
-  avl = gpr_avl_add(avl, box(387), box(253));
-  avl = gpr_avl_add(avl, box(809), box(254));
-  avl = gpr_avl_add(avl, box(997), box(255));
+  avl = gpr_avl_add(avl, box(218), box(251), NULL);
+  avl = gpr_avl_add(avl, box(488), box(252), NULL);
+  avl = gpr_avl_add(avl, box(387), box(253), NULL);
+  avl = gpr_avl_add(avl, box(809), box(254), NULL);
+  avl = gpr_avl_add(avl, box(997), box(255), NULL);
   avl = remove_int(avl, 678);
-  avl = gpr_avl_add(avl, box(368), box(257));
-  avl = gpr_avl_add(avl, box(220), box(258));
-  avl = gpr_avl_add(avl, box(373), box(259));
+  avl = gpr_avl_add(avl, box(368), box(257), NULL);
+  avl = gpr_avl_add(avl, box(220), box(258), NULL);
+  avl = gpr_avl_add(avl, box(373), box(259), NULL);
   avl = remove_int(avl, 874);
   avl = remove_int(avl, 682);
   avl = remove_int(avl, 1014);
   avl = remove_int(avl, 195);
-  avl = gpr_avl_add(avl, box(868), box(264));
+  avl = gpr_avl_add(avl, box(868), box(264), NULL);
   avl = remove_int(avl, 254);
   avl = remove_int(avl, 456);
-  avl = gpr_avl_add(avl, box(906), box(267));
+  avl = gpr_avl_add(avl, box(906), box(267), NULL);
   avl = remove_int(avl, 711);
-  avl = gpr_avl_add(avl, box(632), box(269));
+  avl = gpr_avl_add(avl, box(632), box(269), NULL);
   avl = remove_int(avl, 474);
-  avl = gpr_avl_add(avl, box(508), box(271));
-  avl = gpr_avl_add(avl, box(518), box(272));
+  avl = gpr_avl_add(avl, box(508), box(271), NULL);
+  avl = gpr_avl_add(avl, box(518), box(272), NULL);
   avl = remove_int(avl, 579);
   avl = remove_int(avl, 948);
-  avl = gpr_avl_add(avl, box(789), box(275));
-  avl = gpr_avl_add(avl, box(48), box(276));
-  avl = gpr_avl_add(avl, box(256), box(277));
-  avl = gpr_avl_add(avl, box(754), box(278));
+  avl = gpr_avl_add(avl, box(789), box(275), NULL);
+  avl = gpr_avl_add(avl, box(48), box(276), NULL);
+  avl = gpr_avl_add(avl, box(256), box(277), NULL);
+  avl = gpr_avl_add(avl, box(754), box(278), NULL);
   avl = remove_int(avl, 215);
-  avl = gpr_avl_add(avl, box(679), box(280));
-  avl = gpr_avl_add(avl, box(606), box(281));
+  avl = gpr_avl_add(avl, box(679), box(280), NULL);
+  avl = gpr_avl_add(avl, box(606), box(281), NULL);
   avl = remove_int(avl, 941);
   avl = remove_int(avl, 31);
-  avl = gpr_avl_add(avl, box(758), box(284));
+  avl = gpr_avl_add(avl, box(758), box(284), NULL);
   avl = remove_int(avl, 101);
-  avl = gpr_avl_add(avl, box(244), box(286));
-  avl = gpr_avl_add(avl, box(337), box(287));
-  avl = gpr_avl_add(avl, box(461), box(288));
+  avl = gpr_avl_add(avl, box(244), box(286), NULL);
+  avl = gpr_avl_add(avl, box(337), box(287), NULL);
+  avl = gpr_avl_add(avl, box(461), box(288), NULL);
   avl = remove_int(avl, 476);
-  avl = gpr_avl_add(avl, box(845), box(290));
+  avl = gpr_avl_add(avl, box(845), box(290), NULL);
   avl = remove_int(avl, 160);
-  avl = gpr_avl_add(avl, box(690), box(292));
+  avl = gpr_avl_add(avl, box(690), box(292), NULL);
   avl = remove_int(avl, 931);
-  avl = gpr_avl_add(avl, box(869), box(294));
-  avl = gpr_avl_add(avl, box(1019), box(295));
+  avl = gpr_avl_add(avl, box(869), box(294), NULL);
+  avl = gpr_avl_add(avl, box(1019), box(295), NULL);
   avl = remove_int(avl, 591);
   avl = remove_int(avl, 635);
   avl = remove_int(avl, 67);
-  avl = gpr_avl_add(avl, box(113), box(299));
+  avl = gpr_avl_add(avl, box(113), box(299), NULL);
   avl = remove_int(avl, 305);
-  avl = gpr_avl_add(avl, box(10), box(301));
+  avl = gpr_avl_add(avl, box(10), box(301), NULL);
   avl = remove_int(avl, 823);
   avl = remove_int(avl, 288);
   avl = remove_int(avl, 239);
-  avl = gpr_avl_add(avl, box(646), box(305));
-  avl = gpr_avl_add(avl, box(1006), box(306));
-  avl = gpr_avl_add(avl, box(954), box(307));
-  avl = gpr_avl_add(avl, box(199), box(308));
-  avl = gpr_avl_add(avl, box(69), box(309));
-  avl = gpr_avl_add(avl, box(984), box(310));
+  avl = gpr_avl_add(avl, box(646), box(305), NULL);
+  avl = gpr_avl_add(avl, box(1006), box(306), NULL);
+  avl = gpr_avl_add(avl, box(954), box(307), NULL);
+  avl = gpr_avl_add(avl, box(199), box(308), NULL);
+  avl = gpr_avl_add(avl, box(69), box(309), NULL);
+  avl = gpr_avl_add(avl, box(984), box(310), NULL);
   avl = remove_int(avl, 568);
   avl = remove_int(avl, 666);
   avl = remove_int(avl, 37);
-  avl = gpr_avl_add(avl, box(845), box(314));
+  avl = gpr_avl_add(avl, box(845), box(314), NULL);
   avl = remove_int(avl, 535);
   avl = remove_int(avl, 365);
   avl = remove_int(avl, 676);
@@ -1458,372 +1460,372 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 425);
   avl = remove_int(avl, 704);
   avl = remove_int(avl, 168);
-  avl = gpr_avl_add(avl, box(853), box(322));
-  avl = gpr_avl_add(avl, box(335), box(323));
-  avl = gpr_avl_add(avl, box(961), box(324));
-  avl = gpr_avl_add(avl, box(73), box(325));
+  avl = gpr_avl_add(avl, box(853), box(322), NULL);
+  avl = gpr_avl_add(avl, box(335), box(323), NULL);
+  avl = gpr_avl_add(avl, box(961), box(324), NULL);
+  avl = gpr_avl_add(avl, box(73), box(325), NULL);
   avl = remove_int(avl, 469);
-  avl = gpr_avl_add(avl, box(449), box(327));
+  avl = gpr_avl_add(avl, box(449), box(327), NULL);
   avl = remove_int(avl, 821);
-  avl = gpr_avl_add(avl, box(845), box(329));
+  avl = gpr_avl_add(avl, box(845), box(329), NULL);
   avl = remove_int(avl, 637);
-  avl = gpr_avl_add(avl, box(769), box(331));
-  avl = gpr_avl_add(avl, box(901), box(332));
+  avl = gpr_avl_add(avl, box(769), box(331), NULL);
+  avl = gpr_avl_add(avl, box(901), box(332), NULL);
   avl = remove_int(avl, 142);
   avl = remove_int(avl, 361);
   avl = remove_int(avl, 876);
-  avl = gpr_avl_add(avl, box(614), box(336));
-  avl = gpr_avl_add(avl, box(729), box(337));
+  avl = gpr_avl_add(avl, box(614), box(336), NULL);
+  avl = gpr_avl_add(avl, box(729), box(337), NULL);
   avl = remove_int(avl, 120);
   avl = remove_int(avl, 473);
   avl = remove_int(avl, 445);
-  avl = gpr_avl_add(avl, box(978), box(341));
-  avl = gpr_avl_add(avl, box(164), box(342));
-  avl = gpr_avl_add(avl, box(1), box(343));
+  avl = gpr_avl_add(avl, box(978), box(341), NULL);
+  avl = gpr_avl_add(avl, box(164), box(342), NULL);
+  avl = gpr_avl_add(avl, box(1), box(343), NULL);
   avl = remove_int(avl, 890);
-  avl = gpr_avl_add(avl, box(605), box(345));
-  avl = gpr_avl_add(avl, box(178), box(346));
-  avl = gpr_avl_add(avl, box(481), box(347));
-  avl = gpr_avl_add(avl, box(772), box(348));
+  avl = gpr_avl_add(avl, box(605), box(345), NULL);
+  avl = gpr_avl_add(avl, box(178), box(346), NULL);
+  avl = gpr_avl_add(avl, box(481), box(347), NULL);
+  avl = gpr_avl_add(avl, box(772), box(348), NULL);
   avl = remove_int(avl, 824);
   avl = remove_int(avl, 167);
   avl = remove_int(avl, 151);
-  avl = gpr_avl_add(avl, box(698), box(352));
-  avl = gpr_avl_add(avl, box(202), box(353));
-  avl = gpr_avl_add(avl, box(921), box(354));
-  avl = gpr_avl_add(avl, box(875), box(355));
+  avl = gpr_avl_add(avl, box(698), box(352), NULL);
+  avl = gpr_avl_add(avl, box(202), box(353), NULL);
+  avl = gpr_avl_add(avl, box(921), box(354), NULL);
+  avl = gpr_avl_add(avl, box(875), box(355), NULL);
   avl = remove_int(avl, 197);
   avl = remove_int(avl, 232);
-  avl = gpr_avl_add(avl, box(209), box(358));
+  avl = gpr_avl_add(avl, box(209), box(358), NULL);
   avl = remove_int(avl, 324);
   avl = remove_int(avl, 56);
   avl = remove_int(avl, 579);
   avl = remove_int(avl, 255);
   avl = remove_int(avl, 290);
-  avl = gpr_avl_add(avl, box(661), box(364));
-  avl = gpr_avl_add(avl, box(113), box(365));
+  avl = gpr_avl_add(avl, box(661), box(364), NULL);
+  avl = gpr_avl_add(avl, box(113), box(365), NULL);
   avl = remove_int(avl, 767);
-  avl = gpr_avl_add(avl, box(586), box(367));
-  avl = gpr_avl_add(avl, box(121), box(368));
+  avl = gpr_avl_add(avl, box(586), box(367), NULL);
+  avl = gpr_avl_add(avl, box(121), box(368), NULL);
   avl = remove_int(avl, 235);
   avl = remove_int(avl, 439);
   avl = remove_int(avl, 360);
-  avl = gpr_avl_add(avl, box(916), box(372));
+  avl = gpr_avl_add(avl, box(916), box(372), NULL);
   avl = remove_int(avl, 999);
-  avl = gpr_avl_add(avl, box(825), box(374));
-  avl = gpr_avl_add(avl, box(177), box(375));
+  avl = gpr_avl_add(avl, box(825), box(374), NULL);
+  avl = gpr_avl_add(avl, box(177), box(375), NULL);
   avl = remove_int(avl, 204);
   avl = remove_int(avl, 92);
-  avl = gpr_avl_add(avl, box(794), box(378));
-  avl = gpr_avl_add(avl, box(463), box(379));
-  avl = gpr_avl_add(avl, box(472), box(380));
+  avl = gpr_avl_add(avl, box(794), box(378), NULL);
+  avl = gpr_avl_add(avl, box(463), box(379), NULL);
+  avl = gpr_avl_add(avl, box(472), box(380), NULL);
   avl = remove_int(avl, 235);
-  avl = gpr_avl_add(avl, box(840), box(382));
+  avl = gpr_avl_add(avl, box(840), box(382), NULL);
   avl = remove_int(avl, 657);
-  avl = gpr_avl_add(avl, box(586), box(384));
-  avl = gpr_avl_add(avl, box(979), box(385));
+  avl = gpr_avl_add(avl, box(586), box(384), NULL);
+  avl = gpr_avl_add(avl, box(979), box(385), NULL);
   avl = remove_int(avl, 979);
-  avl = gpr_avl_add(avl, box(639), box(387));
+  avl = gpr_avl_add(avl, box(639), box(387), NULL);
   avl = remove_int(avl, 907);
   avl = remove_int(avl, 973);
-  avl = gpr_avl_add(avl, box(913), box(390));
-  avl = gpr_avl_add(avl, box(566), box(391));
-  avl = gpr_avl_add(avl, box(883), box(392));
-  avl = gpr_avl_add(avl, box(552), box(393));
-  avl = gpr_avl_add(avl, box(16), box(394));
+  avl = gpr_avl_add(avl, box(913), box(390), NULL);
+  avl = gpr_avl_add(avl, box(566), box(391), NULL);
+  avl = gpr_avl_add(avl, box(883), box(392), NULL);
+  avl = gpr_avl_add(avl, box(552), box(393), NULL);
+  avl = gpr_avl_add(avl, box(16), box(394), NULL);
   avl = remove_int(avl, 60);
-  avl = gpr_avl_add(avl, box(567), box(396));
-  avl = gpr_avl_add(avl, box(705), box(397));
-  avl = gpr_avl_add(avl, box(94), box(398));
+  avl = gpr_avl_add(avl, box(567), box(396), NULL);
+  avl = gpr_avl_add(avl, box(705), box(397), NULL);
+  avl = gpr_avl_add(avl, box(94), box(398), NULL);
   avl = remove_int(avl, 321);
-  avl = gpr_avl_add(avl, box(207), box(400));
-  avl = gpr_avl_add(avl, box(682), box(401));
-  avl = gpr_avl_add(avl, box(592), box(402));
-  avl = gpr_avl_add(avl, box(10), box(403));
+  avl = gpr_avl_add(avl, box(207), box(400), NULL);
+  avl = gpr_avl_add(avl, box(682), box(401), NULL);
+  avl = gpr_avl_add(avl, box(592), box(402), NULL);
+  avl = gpr_avl_add(avl, box(10), box(403), NULL);
   avl = remove_int(avl, 911);
   avl = remove_int(avl, 161);
-  avl = gpr_avl_add(avl, box(86), box(406));
+  avl = gpr_avl_add(avl, box(86), box(406), NULL);
   avl = remove_int(avl, 893);
   avl = remove_int(avl, 362);
-  avl = gpr_avl_add(avl, box(599), box(409));
+  avl = gpr_avl_add(avl, box(599), box(409), NULL);
   avl = remove_int(avl, 413);
-  avl = gpr_avl_add(avl, box(867), box(411));
+  avl = gpr_avl_add(avl, box(867), box(411), NULL);
   avl = remove_int(avl, 955);
-  avl = gpr_avl_add(avl, box(341), box(413));
-  avl = gpr_avl_add(avl, box(887), box(414));
+  avl = gpr_avl_add(avl, box(341), box(413), NULL);
+  avl = gpr_avl_add(avl, box(887), box(414), NULL);
   avl = remove_int(avl, 706);
-  avl = gpr_avl_add(avl, box(939), box(416));
+  avl = gpr_avl_add(avl, box(939), box(416), NULL);
   avl = remove_int(avl, 233);
   avl = remove_int(avl, 662);
   avl = remove_int(avl, 984);
   avl = remove_int(avl, 203);
-  avl = gpr_avl_add(avl, box(326), box(421));
+  avl = gpr_avl_add(avl, box(326), box(421), NULL);
   avl = remove_int(avl, 848);
-  avl = gpr_avl_add(avl, box(235), box(423));
+  avl = gpr_avl_add(avl, box(235), box(423), NULL);
   avl = remove_int(avl, 617);
-  avl = gpr_avl_add(avl, box(565), box(425));
+  avl = gpr_avl_add(avl, box(565), box(425), NULL);
   avl = remove_int(avl, 469);
-  avl = gpr_avl_add(avl, box(988), box(427));
+  avl = gpr_avl_add(avl, box(988), box(427), NULL);
   avl = remove_int(avl, 957);
-  avl = gpr_avl_add(avl, box(426), box(429));
+  avl = gpr_avl_add(avl, box(426), box(429), NULL);
   avl = remove_int(avl, 967);
-  avl = gpr_avl_add(avl, box(890), box(431));
-  avl = gpr_avl_add(avl, box(473), box(432));
+  avl = gpr_avl_add(avl, box(890), box(431), NULL);
+  avl = gpr_avl_add(avl, box(473), box(432), NULL);
   avl = remove_int(avl, 367);
   avl = remove_int(avl, 344);
   avl = remove_int(avl, 660);
   avl = remove_int(avl, 448);
   avl = remove_int(avl, 837);
   avl = remove_int(avl, 158);
-  avl = gpr_avl_add(avl, box(459), box(439));
+  avl = gpr_avl_add(avl, box(459), box(439), NULL);
   avl = remove_int(avl, 882);
   avl = remove_int(avl, 782);
-  avl = gpr_avl_add(avl, box(408), box(442));
-  avl = gpr_avl_add(avl, box(728), box(443));
+  avl = gpr_avl_add(avl, box(408), box(442), NULL);
+  avl = gpr_avl_add(avl, box(728), box(443), NULL);
   avl = remove_int(avl, 27);
-  avl = gpr_avl_add(avl, box(137), box(445));
-  avl = gpr_avl_add(avl, box(239), box(446));
+  avl = gpr_avl_add(avl, box(137), box(445), NULL);
+  avl = gpr_avl_add(avl, box(239), box(446), NULL);
   avl = remove_int(avl, 854);
-  avl = gpr_avl_add(avl, box(104), box(448));
-  avl = gpr_avl_add(avl, box(823), box(449));
-  avl = gpr_avl_add(avl, box(524), box(450));
-  avl = gpr_avl_add(avl, box(995), box(451));
+  avl = gpr_avl_add(avl, box(104), box(448), NULL);
+  avl = gpr_avl_add(avl, box(823), box(449), NULL);
+  avl = gpr_avl_add(avl, box(524), box(450), NULL);
+  avl = gpr_avl_add(avl, box(995), box(451), NULL);
   avl = remove_int(avl, 422);
   avl = remove_int(avl, 220);
-  avl = gpr_avl_add(avl, box(856), box(454));
+  avl = gpr_avl_add(avl, box(856), box(454), NULL);
   avl = remove_int(avl, 332);
-  avl = gpr_avl_add(avl, box(679), box(456));
+  avl = gpr_avl_add(avl, box(679), box(456), NULL);
   avl = remove_int(avl, 18);
-  avl = gpr_avl_add(avl, box(837), box(458));
+  avl = gpr_avl_add(avl, box(837), box(458), NULL);
   avl = remove_int(avl, 405);
   avl = remove_int(avl, 877);
   avl = remove_int(avl, 835);
-  avl = gpr_avl_add(avl, box(547), box(462));
+  avl = gpr_avl_add(avl, box(547), box(462), NULL);
   avl = remove_int(avl, 805);
   avl = remove_int(avl, 862);
-  avl = gpr_avl_add(avl, box(75), box(465));
+  avl = gpr_avl_add(avl, box(75), box(465), NULL);
   avl = remove_int(avl, 41);
-  avl = gpr_avl_add(avl, box(310), box(467));
+  avl = gpr_avl_add(avl, box(310), box(467), NULL);
   avl = remove_int(avl, 855);
-  avl = gpr_avl_add(avl, box(20), box(469));
+  avl = gpr_avl_add(avl, box(20), box(469), NULL);
   avl = remove_int(avl, 186);
   avl = remove_int(avl, 378);
   avl = remove_int(avl, 442);
   avl = remove_int(avl, 930);
-  avl = gpr_avl_add(avl, box(118), box(474));
-  avl = gpr_avl_add(avl, box(96), box(475));
+  avl = gpr_avl_add(avl, box(118), box(474), NULL);
+  avl = gpr_avl_add(avl, box(96), box(475), NULL);
   avl = remove_int(avl, 854);
-  avl = gpr_avl_add(avl, box(65), box(477));
-  avl = gpr_avl_add(avl, box(573), box(478));
-  avl = gpr_avl_add(avl, box(4), box(479));
-  avl = gpr_avl_add(avl, box(451), box(480));
-  avl = gpr_avl_add(avl, box(774), box(481));
-  avl = gpr_avl_add(avl, box(126), box(482));
+  avl = gpr_avl_add(avl, box(65), box(477), NULL);
+  avl = gpr_avl_add(avl, box(573), box(478), NULL);
+  avl = gpr_avl_add(avl, box(4), box(479), NULL);
+  avl = gpr_avl_add(avl, box(451), box(480), NULL);
+  avl = gpr_avl_add(avl, box(774), box(481), NULL);
+  avl = gpr_avl_add(avl, box(126), box(482), NULL);
   avl = remove_int(avl, 956);
   avl = remove_int(avl, 591);
   avl = remove_int(avl, 644);
-  avl = gpr_avl_add(avl, box(304), box(486));
+  avl = gpr_avl_add(avl, box(304), box(486), NULL);
   avl = remove_int(avl, 620);
   avl = remove_int(avl, 394);
-  avl = gpr_avl_add(avl, box(1002), box(489));
-  avl = gpr_avl_add(avl, box(837), box(490));
+  avl = gpr_avl_add(avl, box(1002), box(489), NULL);
+  avl = gpr_avl_add(avl, box(837), box(490), NULL);
   avl = remove_int(avl, 485);
-  avl = gpr_avl_add(avl, box(1005), box(492));
+  avl = gpr_avl_add(avl, box(1005), box(492), NULL);
   avl = remove_int(avl, 21);
-  avl = gpr_avl_add(avl, box(396), box(494));
+  avl = gpr_avl_add(avl, box(396), box(494), NULL);
   avl = remove_int(avl, 966);
-  avl = gpr_avl_add(avl, box(105), box(496));
-  avl = gpr_avl_add(avl, box(316), box(497));
+  avl = gpr_avl_add(avl, box(105), box(496), NULL);
+  avl = gpr_avl_add(avl, box(316), box(497), NULL);
   avl = remove_int(avl, 776);
-  avl = gpr_avl_add(avl, box(188), box(499));
+  avl = gpr_avl_add(avl, box(188), box(499), NULL);
   avl = remove_int(avl, 200);
-  avl = gpr_avl_add(avl, box(98), box(501));
-  avl = gpr_avl_add(avl, box(831), box(502));
-  avl = gpr_avl_add(avl, box(227), box(503));
-  avl = gpr_avl_add(avl, box(220), box(504));
+  avl = gpr_avl_add(avl, box(98), box(501), NULL);
+  avl = gpr_avl_add(avl, box(831), box(502), NULL);
+  avl = gpr_avl_add(avl, box(227), box(503), NULL);
+  avl = gpr_avl_add(avl, box(220), box(504), NULL);
   avl = remove_int(avl, 715);
   avl = remove_int(avl, 279);
-  avl = gpr_avl_add(avl, box(701), box(507));
-  avl = gpr_avl_add(avl, box(726), box(508));
-  avl = gpr_avl_add(avl, box(815), box(509));
-  avl = gpr_avl_add(avl, box(749), box(510));
+  avl = gpr_avl_add(avl, box(701), box(507), NULL);
+  avl = gpr_avl_add(avl, box(726), box(508), NULL);
+  avl = gpr_avl_add(avl, box(815), box(509), NULL);
+  avl = gpr_avl_add(avl, box(749), box(510), NULL);
   avl = remove_int(avl, 946);
   avl = remove_int(avl, 449);
   avl = remove_int(avl, 62);
   avl = remove_int(avl, 487);
-  avl = gpr_avl_add(avl, box(545), box(515));
+  avl = gpr_avl_add(avl, box(545), box(515), NULL);
   avl = remove_int(avl, 59);
-  avl = gpr_avl_add(avl, box(168), box(517));
+  avl = gpr_avl_add(avl, box(168), box(517), NULL);
   avl = remove_int(avl, 337);
-  avl = gpr_avl_add(avl, box(69), box(519));
+  avl = gpr_avl_add(avl, box(69), box(519), NULL);
   avl = remove_int(avl, 600);
-  avl = gpr_avl_add(avl, box(591), box(521));
-  avl = gpr_avl_add(avl, box(960), box(522));
-  avl = gpr_avl_add(avl, box(116), box(523));
+  avl = gpr_avl_add(avl, box(591), box(521), NULL);
+  avl = gpr_avl_add(avl, box(960), box(522), NULL);
+  avl = gpr_avl_add(avl, box(116), box(523), NULL);
   avl = remove_int(avl, 991);
-  avl = gpr_avl_add(avl, box(760), box(525));
-  avl = gpr_avl_add(avl, box(664), box(526));
-  avl = gpr_avl_add(avl, box(547), box(527));
+  avl = gpr_avl_add(avl, box(760), box(525), NULL);
+  avl = gpr_avl_add(avl, box(664), box(526), NULL);
+  avl = gpr_avl_add(avl, box(547), box(527), NULL);
   avl = remove_int(avl, 922);
-  avl = gpr_avl_add(avl, box(290), box(529));
-  avl = gpr_avl_add(avl, box(859), box(530));
-  avl = gpr_avl_add(avl, box(49), box(531));
+  avl = gpr_avl_add(avl, box(290), box(529), NULL);
+  avl = gpr_avl_add(avl, box(859), box(530), NULL);
+  avl = gpr_avl_add(avl, box(49), box(531), NULL);
   avl = remove_int(avl, 455);
   avl = remove_int(avl, 786);
-  avl = gpr_avl_add(avl, box(613), box(534));
-  avl = gpr_avl_add(avl, box(326), box(535));
+  avl = gpr_avl_add(avl, box(613), box(534), NULL);
+  avl = gpr_avl_add(avl, box(326), box(535), NULL);
   avl = remove_int(avl, 615);
-  avl = gpr_avl_add(avl, box(45), box(537));
-  avl = gpr_avl_add(avl, box(162), box(538));
-  avl = gpr_avl_add(avl, box(189), box(539));
+  avl = gpr_avl_add(avl, box(45), box(537), NULL);
+  avl = gpr_avl_add(avl, box(162), box(538), NULL);
+  avl = gpr_avl_add(avl, box(189), box(539), NULL);
   avl = remove_int(avl, 68);
   avl = remove_int(avl, 846);
-  avl = gpr_avl_add(avl, box(608), box(542));
+  avl = gpr_avl_add(avl, box(608), box(542), NULL);
   avl = remove_int(avl, 821);
-  avl = gpr_avl_add(avl, box(978), box(544));
-  avl = gpr_avl_add(avl, box(892), box(545));
+  avl = gpr_avl_add(avl, box(978), box(544), NULL);
+  avl = gpr_avl_add(avl, box(892), box(545), NULL);
   avl = remove_int(avl, 924);
-  avl = gpr_avl_add(avl, box(708), box(547));
+  avl = gpr_avl_add(avl, box(708), box(547), NULL);
   avl = remove_int(avl, 135);
   avl = remove_int(avl, 124);
-  avl = gpr_avl_add(avl, box(301), box(550));
-  avl = gpr_avl_add(avl, box(939), box(551));
-  avl = gpr_avl_add(avl, box(344), box(552));
+  avl = gpr_avl_add(avl, box(301), box(550), NULL);
+  avl = gpr_avl_add(avl, box(939), box(551), NULL);
+  avl = gpr_avl_add(avl, box(344), box(552), NULL);
   avl = remove_int(avl, 443);
   avl = remove_int(avl, 122);
-  avl = gpr_avl_add(avl, box(636), box(555));
+  avl = gpr_avl_add(avl, box(636), box(555), NULL);
   avl = remove_int(avl, 558);
-  avl = gpr_avl_add(avl, box(923), box(557));
+  avl = gpr_avl_add(avl, box(923), box(557), NULL);
   avl = remove_int(avl, 827);
-  avl = gpr_avl_add(avl, box(649), box(559));
-  avl = gpr_avl_add(avl, box(808), box(560));
+  avl = gpr_avl_add(avl, box(649), box(559), NULL);
+  avl = gpr_avl_add(avl, box(808), box(560), NULL);
   avl = remove_int(avl, 570);
   avl = remove_int(avl, 434);
-  avl = gpr_avl_add(avl, box(40), box(563));
-  avl = gpr_avl_add(avl, box(725), box(564));
+  avl = gpr_avl_add(avl, box(40), box(563), NULL);
+  avl = gpr_avl_add(avl, box(725), box(564), NULL);
   avl = remove_int(avl, 295);
   avl = remove_int(avl, 615);
   avl = remove_int(avl, 919);
   avl = remove_int(avl, 170);
   avl = remove_int(avl, 442);
   avl = remove_int(avl, 971);
-  avl = gpr_avl_add(avl, box(483), box(571));
-  avl = gpr_avl_add(avl, box(512), box(572));
+  avl = gpr_avl_add(avl, box(483), box(571), NULL);
+  avl = gpr_avl_add(avl, box(512), box(572), NULL);
   avl = remove_int(avl, 648);
   avl = remove_int(avl, 78);
   avl = remove_int(avl, 72);
   avl = remove_int(avl, 790);
   avl = remove_int(avl, 571);
-  avl = gpr_avl_add(avl, box(898), box(578));
+  avl = gpr_avl_add(avl, box(898), box(578), NULL);
   avl = remove_int(avl, 770);
   avl = remove_int(avl, 776);
-  avl = gpr_avl_add(avl, box(602), box(581));
+  avl = gpr_avl_add(avl, box(602), box(581), NULL);
   avl = remove_int(avl, 251);
-  avl = gpr_avl_add(avl, box(303), box(583));
+  avl = gpr_avl_add(avl, box(303), box(583), NULL);
   avl = remove_int(avl, 837);
-  avl = gpr_avl_add(avl, box(714), box(585));
+  avl = gpr_avl_add(avl, box(714), box(585), NULL);
   avl = remove_int(avl, 800);
-  avl = gpr_avl_add(avl, box(266), box(587));
-  avl = gpr_avl_add(avl, box(555), box(588));
+  avl = gpr_avl_add(avl, box(266), box(587), NULL);
+  avl = gpr_avl_add(avl, box(555), box(588), NULL);
   avl = remove_int(avl, 604);
   avl = remove_int(avl, 163);
   avl = remove_int(avl, 497);
-  avl = gpr_avl_add(avl, box(296), box(592));
+  avl = gpr_avl_add(avl, box(296), box(592), NULL);
   avl = remove_int(avl, 129);
-  avl = gpr_avl_add(avl, box(656), box(594));
+  avl = gpr_avl_add(avl, box(656), box(594), NULL);
   avl = remove_int(avl, 769);
   avl = remove_int(avl, 941);
-  avl = gpr_avl_add(avl, box(775), box(597));
-  avl = gpr_avl_add(avl, box(846), box(598));
+  avl = gpr_avl_add(avl, box(775), box(597), NULL);
+  avl = gpr_avl_add(avl, box(846), box(598), NULL);
   avl = remove_int(avl, 591);
   avl = remove_int(avl, 801);
   avl = remove_int(avl, 419);
   avl = remove_int(avl, 455);
-  avl = gpr_avl_add(avl, box(866), box(603));
-  avl = gpr_avl_add(avl, box(575), box(604));
-  avl = gpr_avl_add(avl, box(620), box(605));
+  avl = gpr_avl_add(avl, box(866), box(603), NULL);
+  avl = gpr_avl_add(avl, box(575), box(604), NULL);
+  avl = gpr_avl_add(avl, box(620), box(605), NULL);
   avl = remove_int(avl, 100);
   avl = remove_int(avl, 667);
-  avl = gpr_avl_add(avl, box(138), box(608));
-  avl = gpr_avl_add(avl, box(566), box(609));
-  avl = gpr_avl_add(avl, box(673), box(610));
-  avl = gpr_avl_add(avl, box(178), box(611));
+  avl = gpr_avl_add(avl, box(138), box(608), NULL);
+  avl = gpr_avl_add(avl, box(566), box(609), NULL);
+  avl = gpr_avl_add(avl, box(673), box(610), NULL);
+  avl = gpr_avl_add(avl, box(178), box(611), NULL);
   avl = remove_int(avl, 659);
-  avl = gpr_avl_add(avl, box(759), box(613));
-  avl = gpr_avl_add(avl, box(1008), box(614));
+  avl = gpr_avl_add(avl, box(759), box(613), NULL);
+  avl = gpr_avl_add(avl, box(1008), box(614), NULL);
   avl = remove_int(avl, 116);
-  avl = gpr_avl_add(avl, box(608), box(616));
-  avl = gpr_avl_add(avl, box(339), box(617));
-  avl = gpr_avl_add(avl, box(197), box(618));
+  avl = gpr_avl_add(avl, box(608), box(616), NULL);
+  avl = gpr_avl_add(avl, box(339), box(617), NULL);
+  avl = gpr_avl_add(avl, box(197), box(618), NULL);
   avl = remove_int(avl, 25);
   avl = remove_int(avl, 628);
-  avl = gpr_avl_add(avl, box(487), box(621));
+  avl = gpr_avl_add(avl, box(487), box(621), NULL);
   avl = remove_int(avl, 739);
   avl = remove_int(avl, 100);
   avl = remove_int(avl, 928);
-  avl = gpr_avl_add(avl, box(647), box(625));
+  avl = gpr_avl_add(avl, box(647), box(625), NULL);
   avl = remove_int(avl, 978);
   avl = remove_int(avl, 143);
   avl = remove_int(avl, 755);
-  avl = gpr_avl_add(avl, box(71), box(629));
+  avl = gpr_avl_add(avl, box(71), box(629), NULL);
   avl = remove_int(avl, 205);
-  avl = gpr_avl_add(avl, box(501), box(631));
+  avl = gpr_avl_add(avl, box(501), box(631), NULL);
   avl = remove_int(avl, 723);
   avl = remove_int(avl, 852);
   avl = remove_int(avl, 1021);
   avl = remove_int(avl, 670);
   avl = remove_int(avl, 500);
-  avl = gpr_avl_add(avl, box(330), box(637));
+  avl = gpr_avl_add(avl, box(330), box(637), NULL);
   avl = remove_int(avl, 264);
-  avl = gpr_avl_add(avl, box(69), box(639));
+  avl = gpr_avl_add(avl, box(69), box(639), NULL);
   avl = remove_int(avl, 73);
-  avl = gpr_avl_add(avl, box(745), box(641));
+  avl = gpr_avl_add(avl, box(745), box(641), NULL);
   avl = remove_int(avl, 518);
   avl = remove_int(avl, 641);
   avl = remove_int(avl, 768);
-  avl = gpr_avl_add(avl, box(988), box(645));
-  avl = gpr_avl_add(avl, box(899), box(646));
+  avl = gpr_avl_add(avl, box(988), box(645), NULL);
+  avl = gpr_avl_add(avl, box(899), box(646), NULL);
   avl = remove_int(avl, 763);
   avl = remove_int(avl, 281);
   avl = remove_int(avl, 496);
-  avl = gpr_avl_add(avl, box(445), box(650));
+  avl = gpr_avl_add(avl, box(445), box(650), NULL);
   avl = remove_int(avl, 905);
-  avl = gpr_avl_add(avl, box(275), box(652));
-  avl = gpr_avl_add(avl, box(137), box(653));
+  avl = gpr_avl_add(avl, box(275), box(652), NULL);
+  avl = gpr_avl_add(avl, box(137), box(653), NULL);
   avl = remove_int(avl, 642);
-  avl = gpr_avl_add(avl, box(708), box(655));
+  avl = gpr_avl_add(avl, box(708), box(655), NULL);
   avl = remove_int(avl, 922);
-  avl = gpr_avl_add(avl, box(743), box(657));
+  avl = gpr_avl_add(avl, box(743), box(657), NULL);
   avl = remove_int(avl, 295);
   avl = remove_int(avl, 665);
   avl = remove_int(avl, 48);
-  avl = gpr_avl_add(avl, box(1012), box(661));
+  avl = gpr_avl_add(avl, box(1012), box(661), NULL);
   avl = remove_int(avl, 71);
   avl = remove_int(avl, 523);
-  avl = gpr_avl_add(avl, box(319), box(664));
+  avl = gpr_avl_add(avl, box(319), box(664), NULL);
   avl = remove_int(avl, 632);
-  avl = gpr_avl_add(avl, box(137), box(666));
-  avl = gpr_avl_add(avl, box(686), box(667));
-  avl = gpr_avl_add(avl, box(724), box(668));
-  avl = gpr_avl_add(avl, box(952), box(669));
-  avl = gpr_avl_add(avl, box(5), box(670));
+  avl = gpr_avl_add(avl, box(137), box(666), NULL);
+  avl = gpr_avl_add(avl, box(686), box(667), NULL);
+  avl = gpr_avl_add(avl, box(724), box(668), NULL);
+  avl = gpr_avl_add(avl, box(952), box(669), NULL);
+  avl = gpr_avl_add(avl, box(5), box(670), NULL);
   avl = remove_int(avl, 35);
-  avl = gpr_avl_add(avl, box(43), box(672));
-  avl = gpr_avl_add(avl, box(320), box(673));
-  avl = gpr_avl_add(avl, box(115), box(674));
+  avl = gpr_avl_add(avl, box(43), box(672), NULL);
+  avl = gpr_avl_add(avl, box(320), box(673), NULL);
+  avl = gpr_avl_add(avl, box(115), box(674), NULL);
   avl = remove_int(avl, 377);
   avl = remove_int(avl, 591);
   avl = remove_int(avl, 87);
   avl = remove_int(avl, 93);
-  avl = gpr_avl_add(avl, box(1016), box(679));
-  avl = gpr_avl_add(avl, box(605), box(680));
-  avl = gpr_avl_add(avl, box(152), box(681));
-  avl = gpr_avl_add(avl, box(113), box(682));
+  avl = gpr_avl_add(avl, box(1016), box(679), NULL);
+  avl = gpr_avl_add(avl, box(605), box(680), NULL);
+  avl = gpr_avl_add(avl, box(152), box(681), NULL);
+  avl = gpr_avl_add(avl, box(113), box(682), NULL);
   avl = remove_int(avl, 131);
   avl = remove_int(avl, 637);
-  avl = gpr_avl_add(avl, box(156), box(685));
+  avl = gpr_avl_add(avl, box(156), box(685), NULL);
   avl = remove_int(avl, 696);
-  avl = gpr_avl_add(avl, box(546), box(687));
+  avl = gpr_avl_add(avl, box(546), box(687), NULL);
   avl = remove_int(avl, 970);
   avl = remove_int(avl, 53);
   avl = remove_int(avl, 827);
@@ -1837,22 +1839,22 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 244);
   avl = remove_int(avl, 576);
   avl = remove_int(avl, 413);
-  avl = gpr_avl_add(avl, box(500), box(701));
+  avl = gpr_avl_add(avl, box(500), box(701), NULL);
   avl = remove_int(avl, 924);
-  avl = gpr_avl_add(avl, box(825), box(703));
+  avl = gpr_avl_add(avl, box(825), box(703), NULL);
   avl = remove_int(avl, 888);
   avl = remove_int(avl, 931);
-  avl = gpr_avl_add(avl, box(285), box(706));
+  avl = gpr_avl_add(avl, box(285), box(706), NULL);
   avl = remove_int(avl, 62);
   avl = remove_int(avl, 444);
   avl = remove_int(avl, 946);
-  avl = gpr_avl_add(avl, box(122), box(710));
-  avl = gpr_avl_add(avl, box(846), box(711));
+  avl = gpr_avl_add(avl, box(122), box(710), NULL);
+  avl = gpr_avl_add(avl, box(846), box(711), NULL);
   avl = remove_int(avl, 628);
-  avl = gpr_avl_add(avl, box(511), box(713));
-  avl = gpr_avl_add(avl, box(398), box(714));
+  avl = gpr_avl_add(avl, box(511), box(713), NULL);
+  avl = gpr_avl_add(avl, box(398), box(714), NULL);
   avl = remove_int(avl, 730);
-  avl = gpr_avl_add(avl, box(797), box(716));
+  avl = gpr_avl_add(avl, box(797), box(716), NULL);
   avl = remove_int(avl, 897);
   avl = remove_int(avl, 228);
   avl = remove_int(avl, 544);
@@ -1861,51 +1863,51 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 583);
   avl = remove_int(avl, 894);
   avl = remove_int(avl, 942);
-  avl = gpr_avl_add(avl, box(346), box(725));
-  avl = gpr_avl_add(avl, box(1015), box(726));
+  avl = gpr_avl_add(avl, box(346), box(725), NULL);
+  avl = gpr_avl_add(avl, box(1015), box(726), NULL);
   avl = remove_int(avl, 813);
-  avl = gpr_avl_add(avl, box(213), box(728));
+  avl = gpr_avl_add(avl, box(213), box(728), NULL);
   avl = remove_int(avl, 468);
   avl = remove_int(avl, 365);
   avl = remove_int(avl, 399);
-  avl = gpr_avl_add(avl, box(380), box(732));
+  avl = gpr_avl_add(avl, box(380), box(732), NULL);
   avl = remove_int(avl, 835);
   avl = remove_int(avl, 970);
-  avl = gpr_avl_add(avl, box(700), box(735));
-  avl = gpr_avl_add(avl, box(807), box(736));
+  avl = gpr_avl_add(avl, box(700), box(735), NULL);
+  avl = gpr_avl_add(avl, box(807), box(736), NULL);
   avl = remove_int(avl, 312);
   avl = remove_int(avl, 282);
   avl = remove_int(avl, 370);
   avl = remove_int(avl, 999);
   avl = remove_int(avl, 241);
   avl = remove_int(avl, 884);
-  avl = gpr_avl_add(avl, box(587), box(743));
-  avl = gpr_avl_add(avl, box(332), box(744));
+  avl = gpr_avl_add(avl, box(587), box(743), NULL);
+  avl = gpr_avl_add(avl, box(332), box(744), NULL);
   avl = remove_int(avl, 686);
   avl = remove_int(avl, 206);
   avl = remove_int(avl, 835);
-  avl = gpr_avl_add(avl, box(334), box(748));
+  avl = gpr_avl_add(avl, box(334), box(748), NULL);
   avl = remove_int(avl, 171);
-  avl = gpr_avl_add(avl, box(1002), box(750));
-  avl = gpr_avl_add(avl, box(779), box(751));
-  avl = gpr_avl_add(avl, box(307), box(752));
-  avl = gpr_avl_add(avl, box(127), box(753));
-  avl = gpr_avl_add(avl, box(251), box(754));
+  avl = gpr_avl_add(avl, box(1002), box(750), NULL);
+  avl = gpr_avl_add(avl, box(779), box(751), NULL);
+  avl = gpr_avl_add(avl, box(307), box(752), NULL);
+  avl = gpr_avl_add(avl, box(127), box(753), NULL);
+  avl = gpr_avl_add(avl, box(251), box(754), NULL);
   avl = remove_int(avl, 790);
   avl = remove_int(avl, 189);
   avl = remove_int(avl, 193);
   avl = remove_int(avl, 38);
   avl = remove_int(avl, 124);
-  avl = gpr_avl_add(avl, box(812), box(760));
+  avl = gpr_avl_add(avl, box(812), box(760), NULL);
   avl = remove_int(avl, 43);
-  avl = gpr_avl_add(avl, box(871), box(762));
-  avl = gpr_avl_add(avl, box(580), box(763));
+  avl = gpr_avl_add(avl, box(871), box(762), NULL);
+  avl = gpr_avl_add(avl, box(580), box(763), NULL);
   avl = remove_int(avl, 501);
   avl = remove_int(avl, 462);
   avl = remove_int(avl, 599);
-  avl = gpr_avl_add(avl, box(240), box(767));
-  avl = gpr_avl_add(avl, box(285), box(768));
-  avl = gpr_avl_add(avl, box(472), box(769));
+  avl = gpr_avl_add(avl, box(240), box(767), NULL);
+  avl = gpr_avl_add(avl, box(285), box(768), NULL);
+  avl = gpr_avl_add(avl, box(472), box(769), NULL);
   avl = remove_int(avl, 865);
   avl = remove_int(avl, 763);
   avl = remove_int(avl, 245);
@@ -1913,48 +1915,48 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 713);
   avl = remove_int(avl, 654);
   avl = remove_int(avl, 1014);
-  avl = gpr_avl_add(avl, box(495), box(777));
-  avl = gpr_avl_add(avl, box(552), box(778));
+  avl = gpr_avl_add(avl, box(495), box(777), NULL);
+  avl = gpr_avl_add(avl, box(552), box(778), NULL);
   avl = remove_int(avl, 19);
   avl = remove_int(avl, 803);
-  avl = gpr_avl_add(avl, box(508), box(781));
+  avl = gpr_avl_add(avl, box(508), box(781), NULL);
   avl = remove_int(avl, 699);
   avl = remove_int(avl, 260);
   avl = remove_int(avl, 92);
   avl = remove_int(avl, 497);
-  avl = gpr_avl_add(avl, box(970), box(786));
+  avl = gpr_avl_add(avl, box(970), box(786), NULL);
   avl = remove_int(avl, 987);
   avl = remove_int(avl, 168);
   avl = remove_int(avl, 476);
   avl = remove_int(avl, 248);
-  avl = gpr_avl_add(avl, box(358), box(791));
+  avl = gpr_avl_add(avl, box(358), box(791), NULL);
   avl = remove_int(avl, 804);
   avl = remove_int(avl, 77);
   avl = remove_int(avl, 905);
   avl = remove_int(avl, 362);
-  avl = gpr_avl_add(avl, box(578), box(796));
+  avl = gpr_avl_add(avl, box(578), box(796), NULL);
   avl = remove_int(avl, 38);
   avl = remove_int(avl, 595);
-  avl = gpr_avl_add(avl, box(213), box(799));
+  avl = gpr_avl_add(avl, box(213), box(799), NULL);
   avl = remove_int(avl, 7);
   avl = remove_int(avl, 620);
-  avl = gpr_avl_add(avl, box(946), box(802));
+  avl = gpr_avl_add(avl, box(946), box(802), NULL);
   avl = remove_int(avl, 145);
-  avl = gpr_avl_add(avl, box(628), box(804));
+  avl = gpr_avl_add(avl, box(628), box(804), NULL);
   avl = remove_int(avl, 972);
-  avl = gpr_avl_add(avl, box(728), box(806));
+  avl = gpr_avl_add(avl, box(728), box(806), NULL);
   avl = remove_int(avl, 91);
-  avl = gpr_avl_add(avl, box(136), box(808));
-  avl = gpr_avl_add(avl, box(841), box(809));
-  avl = gpr_avl_add(avl, box(265), box(810));
-  avl = gpr_avl_add(avl, box(701), box(811));
-  avl = gpr_avl_add(avl, box(27), box(812));
+  avl = gpr_avl_add(avl, box(136), box(808), NULL);
+  avl = gpr_avl_add(avl, box(841), box(809), NULL);
+  avl = gpr_avl_add(avl, box(265), box(810), NULL);
+  avl = gpr_avl_add(avl, box(701), box(811), NULL);
+  avl = gpr_avl_add(avl, box(27), box(812), NULL);
   avl = remove_int(avl, 72);
   avl = remove_int(avl, 14);
-  avl = gpr_avl_add(avl, box(286), box(815));
+  avl = gpr_avl_add(avl, box(286), box(815), NULL);
   avl = remove_int(avl, 996);
   avl = remove_int(avl, 998);
-  avl = gpr_avl_add(avl, box(466), box(818));
+  avl = gpr_avl_add(avl, box(466), box(818), NULL);
   avl = remove_int(avl, 1009);
   avl = remove_int(avl, 741);
   avl = remove_int(avl, 947);
@@ -1963,138 +1965,138 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 183);
   avl = remove_int(avl, 395);
   avl = remove_int(avl, 951);
-  avl = gpr_avl_add(avl, box(267), box(827));
+  avl = gpr_avl_add(avl, box(267), box(827), NULL);
   avl = remove_int(avl, 812);
-  avl = gpr_avl_add(avl, box(577), box(829));
+  avl = gpr_avl_add(avl, box(577), box(829), NULL);
   avl = remove_int(avl, 624);
   avl = remove_int(avl, 847);
   avl = remove_int(avl, 745);
-  avl = gpr_avl_add(avl, box(491), box(833));
-  avl = gpr_avl_add(avl, box(941), box(834));
+  avl = gpr_avl_add(avl, box(491), box(833), NULL);
+  avl = gpr_avl_add(avl, box(941), box(834), NULL);
   avl = remove_int(avl, 258);
-  avl = gpr_avl_add(avl, box(410), box(836));
-  avl = gpr_avl_add(avl, box(80), box(837));
-  avl = gpr_avl_add(avl, box(196), box(838));
-  avl = gpr_avl_add(avl, box(5), box(839));
+  avl = gpr_avl_add(avl, box(410), box(836), NULL);
+  avl = gpr_avl_add(avl, box(80), box(837), NULL);
+  avl = gpr_avl_add(avl, box(196), box(838), NULL);
+  avl = gpr_avl_add(avl, box(5), box(839), NULL);
   avl = remove_int(avl, 782);
-  avl = gpr_avl_add(avl, box(827), box(841));
+  avl = gpr_avl_add(avl, box(827), box(841), NULL);
   avl = remove_int(avl, 472);
   avl = remove_int(avl, 664);
-  avl = gpr_avl_add(avl, box(409), box(844));
-  avl = gpr_avl_add(avl, box(62), box(845));
+  avl = gpr_avl_add(avl, box(409), box(844), NULL);
+  avl = gpr_avl_add(avl, box(62), box(845), NULL);
   avl = remove_int(avl, 56);
   avl = remove_int(avl, 606);
   avl = remove_int(avl, 707);
   avl = remove_int(avl, 989);
   avl = remove_int(avl, 549);
   avl = remove_int(avl, 259);
-  avl = gpr_avl_add(avl, box(405), box(852));
+  avl = gpr_avl_add(avl, box(405), box(852), NULL);
   avl = remove_int(avl, 587);
   avl = remove_int(avl, 350);
-  avl = gpr_avl_add(avl, box(980), box(855));
-  avl = gpr_avl_add(avl, box(992), box(856));
-  avl = gpr_avl_add(avl, box(818), box(857));
+  avl = gpr_avl_add(avl, box(980), box(855), NULL);
+  avl = gpr_avl_add(avl, box(992), box(856), NULL);
+  avl = gpr_avl_add(avl, box(818), box(857), NULL);
   avl = remove_int(avl, 853);
   avl = remove_int(avl, 701);
-  avl = gpr_avl_add(avl, box(675), box(860));
+  avl = gpr_avl_add(avl, box(675), box(860), NULL);
   avl = remove_int(avl, 248);
   avl = remove_int(avl, 649);
-  avl = gpr_avl_add(avl, box(508), box(863));
+  avl = gpr_avl_add(avl, box(508), box(863), NULL);
   avl = remove_int(avl, 927);
-  avl = gpr_avl_add(avl, box(957), box(865));
-  avl = gpr_avl_add(avl, box(698), box(866));
-  avl = gpr_avl_add(avl, box(388), box(867));
-  avl = gpr_avl_add(avl, box(532), box(868));
-  avl = gpr_avl_add(avl, box(681), box(869));
+  avl = gpr_avl_add(avl, box(957), box(865), NULL);
+  avl = gpr_avl_add(avl, box(698), box(866), NULL);
+  avl = gpr_avl_add(avl, box(388), box(867), NULL);
+  avl = gpr_avl_add(avl, box(532), box(868), NULL);
+  avl = gpr_avl_add(avl, box(681), box(869), NULL);
   avl = remove_int(avl, 544);
   avl = remove_int(avl, 991);
   avl = remove_int(avl, 397);
-  avl = gpr_avl_add(avl, box(954), box(873));
-  avl = gpr_avl_add(avl, box(219), box(874));
-  avl = gpr_avl_add(avl, box(465), box(875));
+  avl = gpr_avl_add(avl, box(954), box(873), NULL);
+  avl = gpr_avl_add(avl, box(219), box(874), NULL);
+  avl = gpr_avl_add(avl, box(465), box(875), NULL);
   avl = remove_int(avl, 371);
-  avl = gpr_avl_add(avl, box(601), box(877));
-  avl = gpr_avl_add(avl, box(543), box(878));
+  avl = gpr_avl_add(avl, box(601), box(877), NULL);
+  avl = gpr_avl_add(avl, box(543), box(878), NULL);
   avl = remove_int(avl, 329);
-  avl = gpr_avl_add(avl, box(560), box(880));
+  avl = gpr_avl_add(avl, box(560), box(880), NULL);
   avl = remove_int(avl, 898);
-  avl = gpr_avl_add(avl, box(455), box(882));
+  avl = gpr_avl_add(avl, box(455), box(882), NULL);
   avl = remove_int(avl, 313);
-  avl = gpr_avl_add(avl, box(215), box(884));
+  avl = gpr_avl_add(avl, box(215), box(884), NULL);
   avl = remove_int(avl, 846);
-  avl = gpr_avl_add(avl, box(608), box(886));
+  avl = gpr_avl_add(avl, box(608), box(886), NULL);
   avl = remove_int(avl, 248);
-  avl = gpr_avl_add(avl, box(575), box(888));
+  avl = gpr_avl_add(avl, box(575), box(888), NULL);
   avl = remove_int(avl, 207);
   avl = remove_int(avl, 810);
   avl = remove_int(avl, 665);
   avl = remove_int(avl, 361);
-  avl = gpr_avl_add(avl, box(154), box(893));
-  avl = gpr_avl_add(avl, box(329), box(894));
-  avl = gpr_avl_add(avl, box(326), box(895));
+  avl = gpr_avl_add(avl, box(154), box(893), NULL);
+  avl = gpr_avl_add(avl, box(329), box(894), NULL);
+  avl = gpr_avl_add(avl, box(326), box(895), NULL);
   avl = remove_int(avl, 746);
   avl = remove_int(avl, 99);
-  avl = gpr_avl_add(avl, box(464), box(898));
-  avl = gpr_avl_add(avl, box(141), box(899));
+  avl = gpr_avl_add(avl, box(464), box(898), NULL);
+  avl = gpr_avl_add(avl, box(141), box(899), NULL);
   avl = remove_int(avl, 383);
-  avl = gpr_avl_add(avl, box(414), box(901));
-  avl = gpr_avl_add(avl, box(777), box(902));
+  avl = gpr_avl_add(avl, box(414), box(901), NULL);
+  avl = gpr_avl_add(avl, box(777), box(902), NULL);
   avl = remove_int(avl, 972);
   avl = remove_int(avl, 841);
   avl = remove_int(avl, 100);
-  avl = gpr_avl_add(avl, box(828), box(906));
+  avl = gpr_avl_add(avl, box(828), box(906), NULL);
   avl = remove_int(avl, 785);
-  avl = gpr_avl_add(avl, box(1008), box(908));
-  avl = gpr_avl_add(avl, box(46), box(909));
+  avl = gpr_avl_add(avl, box(1008), box(908), NULL);
+  avl = gpr_avl_add(avl, box(46), box(909), NULL);
   avl = remove_int(avl, 399);
-  avl = gpr_avl_add(avl, box(178), box(911));
-  avl = gpr_avl_add(avl, box(573), box(912));
+  avl = gpr_avl_add(avl, box(178), box(911), NULL);
+  avl = gpr_avl_add(avl, box(573), box(912), NULL);
   avl = remove_int(avl, 299);
-  avl = gpr_avl_add(avl, box(690), box(914));
-  avl = gpr_avl_add(avl, box(692), box(915));
+  avl = gpr_avl_add(avl, box(690), box(914), NULL);
+  avl = gpr_avl_add(avl, box(692), box(915), NULL);
   avl = remove_int(avl, 404);
   avl = remove_int(avl, 16);
   avl = remove_int(avl, 746);
   avl = remove_int(avl, 486);
   avl = remove_int(avl, 119);
-  avl = gpr_avl_add(avl, box(167), box(921));
+  avl = gpr_avl_add(avl, box(167), box(921), NULL);
   avl = remove_int(avl, 328);
-  avl = gpr_avl_add(avl, box(89), box(923));
+  avl = gpr_avl_add(avl, box(89), box(923), NULL);
   avl = remove_int(avl, 867);
   avl = remove_int(avl, 626);
   avl = remove_int(avl, 507);
-  avl = gpr_avl_add(avl, box(365), box(927));
-  avl = gpr_avl_add(avl, box(58), box(928));
-  avl = gpr_avl_add(avl, box(70), box(929));
+  avl = gpr_avl_add(avl, box(365), box(927), NULL);
+  avl = gpr_avl_add(avl, box(58), box(928), NULL);
+  avl = gpr_avl_add(avl, box(70), box(929), NULL);
   avl = remove_int(avl, 81);
   avl = remove_int(avl, 797);
-  avl = gpr_avl_add(avl, box(846), box(932));
+  avl = gpr_avl_add(avl, box(846), box(932), NULL);
   avl = remove_int(avl, 642);
-  avl = gpr_avl_add(avl, box(777), box(934));
+  avl = gpr_avl_add(avl, box(777), box(934), NULL);
   avl = remove_int(avl, 107);
-  avl = gpr_avl_add(avl, box(691), box(936));
-  avl = gpr_avl_add(avl, box(820), box(937));
-  avl = gpr_avl_add(avl, box(202), box(938));
-  avl = gpr_avl_add(avl, box(308), box(939));
-  avl = gpr_avl_add(avl, box(20), box(940));
+  avl = gpr_avl_add(avl, box(691), box(936), NULL);
+  avl = gpr_avl_add(avl, box(820), box(937), NULL);
+  avl = gpr_avl_add(avl, box(202), box(938), NULL);
+  avl = gpr_avl_add(avl, box(308), box(939), NULL);
+  avl = gpr_avl_add(avl, box(20), box(940), NULL);
   avl = remove_int(avl, 289);
-  avl = gpr_avl_add(avl, box(714), box(942));
-  avl = gpr_avl_add(avl, box(584), box(943));
+  avl = gpr_avl_add(avl, box(714), box(942), NULL);
+  avl = gpr_avl_add(avl, box(584), box(943), NULL);
   avl = remove_int(avl, 294);
-  avl = gpr_avl_add(avl, box(496), box(945));
-  avl = gpr_avl_add(avl, box(394), box(946));
-  avl = gpr_avl_add(avl, box(860), box(947));
-  avl = gpr_avl_add(avl, box(58), box(948));
+  avl = gpr_avl_add(avl, box(496), box(945), NULL);
+  avl = gpr_avl_add(avl, box(394), box(946), NULL);
+  avl = gpr_avl_add(avl, box(860), box(947), NULL);
+  avl = gpr_avl_add(avl, box(58), box(948), NULL);
   avl = remove_int(avl, 784);
   avl = remove_int(avl, 584);
   avl = remove_int(avl, 708);
-  avl = gpr_avl_add(avl, box(142), box(952));
-  avl = gpr_avl_add(avl, box(247), box(953));
-  avl = gpr_avl_add(avl, box(389), box(954));
+  avl = gpr_avl_add(avl, box(142), box(952), NULL);
+  avl = gpr_avl_add(avl, box(247), box(953), NULL);
+  avl = gpr_avl_add(avl, box(389), box(954), NULL);
   avl = remove_int(avl, 390);
-  avl = gpr_avl_add(avl, box(465), box(956));
-  avl = gpr_avl_add(avl, box(936), box(957));
-  avl = gpr_avl_add(avl, box(309), box(958));
+  avl = gpr_avl_add(avl, box(465), box(956), NULL);
+  avl = gpr_avl_add(avl, box(936), box(957), NULL);
+  avl = gpr_avl_add(avl, box(309), box(958), NULL);
   avl = remove_int(avl, 928);
   avl = remove_int(avl, 128);
   avl = remove_int(avl, 979);
@@ -2102,15 +2104,15 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 738);
   avl = remove_int(avl, 271);
   avl = remove_int(avl, 540);
-  avl = gpr_avl_add(avl, box(365), box(966));
+  avl = gpr_avl_add(avl, box(365), box(966), NULL);
   avl = remove_int(avl, 82);
-  avl = gpr_avl_add(avl, box(728), box(968));
+  avl = gpr_avl_add(avl, box(728), box(968), NULL);
   avl = remove_int(avl, 852);
-  avl = gpr_avl_add(avl, box(884), box(970));
-  avl = gpr_avl_add(avl, box(502), box(971));
+  avl = gpr_avl_add(avl, box(884), box(970), NULL);
+  avl = gpr_avl_add(avl, box(502), box(971), NULL);
   avl = remove_int(avl, 898);
   avl = remove_int(avl, 481);
-  avl = gpr_avl_add(avl, box(911), box(974));
+  avl = gpr_avl_add(avl, box(911), box(974), NULL);
   avl = remove_int(avl, 787);
   avl = remove_int(avl, 785);
   avl = remove_int(avl, 537);
@@ -2119,125 +2121,125 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 749);
   avl = remove_int(avl, 637);
   avl = remove_int(avl, 900);
-  avl = gpr_avl_add(avl, box(598), box(983));
+  avl = gpr_avl_add(avl, box(598), box(983), NULL);
   avl = remove_int(avl, 25);
   avl = remove_int(avl, 697);
-  avl = gpr_avl_add(avl, box(645), box(986));
-  avl = gpr_avl_add(avl, box(211), box(987));
-  avl = gpr_avl_add(avl, box(589), box(988));
+  avl = gpr_avl_add(avl, box(645), box(986), NULL);
+  avl = gpr_avl_add(avl, box(211), box(987), NULL);
+  avl = gpr_avl_add(avl, box(589), box(988), NULL);
   avl = remove_int(avl, 702);
-  avl = gpr_avl_add(avl, box(53), box(990));
+  avl = gpr_avl_add(avl, box(53), box(990), NULL);
   avl = remove_int(avl, 492);
   avl = remove_int(avl, 185);
   avl = remove_int(avl, 246);
   avl = remove_int(avl, 257);
   avl = remove_int(avl, 502);
   avl = remove_int(avl, 34);
-  avl = gpr_avl_add(avl, box(74), box(997));
-  avl = gpr_avl_add(avl, box(834), box(998));
-  avl = gpr_avl_add(avl, box(514), box(999));
-  avl = gpr_avl_add(avl, box(75), box(1000));
+  avl = gpr_avl_add(avl, box(74), box(997), NULL);
+  avl = gpr_avl_add(avl, box(834), box(998), NULL);
+  avl = gpr_avl_add(avl, box(514), box(999), NULL);
+  avl = gpr_avl_add(avl, box(75), box(1000), NULL);
   avl = remove_int(avl, 745);
-  avl = gpr_avl_add(avl, box(362), box(1002));
+  avl = gpr_avl_add(avl, box(362), box(1002), NULL);
   avl = remove_int(avl, 215);
-  avl = gpr_avl_add(avl, box(624), box(1004));
+  avl = gpr_avl_add(avl, box(624), box(1004), NULL);
   avl = remove_int(avl, 404);
   avl = remove_int(avl, 359);
   avl = remove_int(avl, 491);
-  avl = gpr_avl_add(avl, box(903), box(1008));
-  avl = gpr_avl_add(avl, box(240), box(1009));
+  avl = gpr_avl_add(avl, box(903), box(1008), NULL);
+  avl = gpr_avl_add(avl, box(240), box(1009), NULL);
   avl = remove_int(avl, 95);
-  avl = gpr_avl_add(avl, box(119), box(1011));
-  avl = gpr_avl_add(avl, box(857), box(1012));
+  avl = gpr_avl_add(avl, box(119), box(1011), NULL);
+  avl = gpr_avl_add(avl, box(857), box(1012), NULL);
   avl = remove_int(avl, 39);
   avl = remove_int(avl, 866);
-  avl = gpr_avl_add(avl, box(503), box(1015));
-  avl = gpr_avl_add(avl, box(740), box(1016));
+  avl = gpr_avl_add(avl, box(503), box(1015), NULL);
+  avl = gpr_avl_add(avl, box(740), box(1016), NULL);
   avl = remove_int(avl, 637);
   avl = remove_int(avl, 156);
   avl = remove_int(avl, 6);
   avl = remove_int(avl, 745);
   avl = remove_int(avl, 433);
   avl = remove_int(avl, 283);
-  avl = gpr_avl_add(avl, box(625), box(1023));
+  avl = gpr_avl_add(avl, box(625), box(1023), NULL);
   avl = remove_int(avl, 638);
-  avl = gpr_avl_add(avl, box(299), box(1025));
-  avl = gpr_avl_add(avl, box(584), box(1026));
+  avl = gpr_avl_add(avl, box(299), box(1025), NULL);
+  avl = gpr_avl_add(avl, box(584), box(1026), NULL);
   avl = remove_int(avl, 863);
-  avl = gpr_avl_add(avl, box(612), box(1028));
-  avl = gpr_avl_add(avl, box(62), box(1029));
-  avl = gpr_avl_add(avl, box(432), box(1030));
+  avl = gpr_avl_add(avl, box(612), box(1028), NULL);
+  avl = gpr_avl_add(avl, box(62), box(1029), NULL);
+  avl = gpr_avl_add(avl, box(432), box(1030), NULL);
   avl = remove_int(avl, 371);
   avl = remove_int(avl, 790);
   avl = remove_int(avl, 227);
   avl = remove_int(avl, 836);
-  avl = gpr_avl_add(avl, box(703), box(1035));
-  avl = gpr_avl_add(avl, box(644), box(1036));
+  avl = gpr_avl_add(avl, box(703), box(1035), NULL);
+  avl = gpr_avl_add(avl, box(644), box(1036), NULL);
   avl = remove_int(avl, 638);
-  avl = gpr_avl_add(avl, box(13), box(1038));
+  avl = gpr_avl_add(avl, box(13), box(1038), NULL);
   avl = remove_int(avl, 66);
   avl = remove_int(avl, 82);
-  avl = gpr_avl_add(avl, box(362), box(1041));
-  avl = gpr_avl_add(avl, box(783), box(1042));
+  avl = gpr_avl_add(avl, box(362), box(1041), NULL);
+  avl = gpr_avl_add(avl, box(783), box(1042), NULL);
   avl = remove_int(avl, 60);
-  avl = gpr_avl_add(avl, box(80), box(1044));
-  avl = gpr_avl_add(avl, box(825), box(1045));
-  avl = gpr_avl_add(avl, box(688), box(1046));
-  avl = gpr_avl_add(avl, box(662), box(1047));
+  avl = gpr_avl_add(avl, box(80), box(1044), NULL);
+  avl = gpr_avl_add(avl, box(825), box(1045), NULL);
+  avl = gpr_avl_add(avl, box(688), box(1046), NULL);
+  avl = gpr_avl_add(avl, box(662), box(1047), NULL);
   avl = remove_int(avl, 156);
   avl = remove_int(avl, 376);
   avl = remove_int(avl, 99);
-  avl = gpr_avl_add(avl, box(526), box(1051));
-  avl = gpr_avl_add(avl, box(168), box(1052));
+  avl = gpr_avl_add(avl, box(526), box(1051), NULL);
+  avl = gpr_avl_add(avl, box(168), box(1052), NULL);
   avl = remove_int(avl, 646);
   avl = remove_int(avl, 380);
   avl = remove_int(avl, 833);
-  avl = gpr_avl_add(avl, box(53), box(1056));
+  avl = gpr_avl_add(avl, box(53), box(1056), NULL);
   avl = remove_int(avl, 105);
-  avl = gpr_avl_add(avl, box(373), box(1058));
-  avl = gpr_avl_add(avl, box(184), box(1059));
+  avl = gpr_avl_add(avl, box(373), box(1058), NULL);
+  avl = gpr_avl_add(avl, box(184), box(1059), NULL);
   avl = remove_int(avl, 288);
-  avl = gpr_avl_add(avl, box(966), box(1061));
+  avl = gpr_avl_add(avl, box(966), box(1061), NULL);
   avl = remove_int(avl, 158);
-  avl = gpr_avl_add(avl, box(406), box(1063));
+  avl = gpr_avl_add(avl, box(406), box(1063), NULL);
   avl = remove_int(avl, 470);
-  avl = gpr_avl_add(avl, box(283), box(1065));
-  avl = gpr_avl_add(avl, box(838), box(1066));
-  avl = gpr_avl_add(avl, box(288), box(1067));
-  avl = gpr_avl_add(avl, box(950), box(1068));
-  avl = gpr_avl_add(avl, box(163), box(1069));
+  avl = gpr_avl_add(avl, box(283), box(1065), NULL);
+  avl = gpr_avl_add(avl, box(838), box(1066), NULL);
+  avl = gpr_avl_add(avl, box(288), box(1067), NULL);
+  avl = gpr_avl_add(avl, box(950), box(1068), NULL);
+  avl = gpr_avl_add(avl, box(163), box(1069), NULL);
   avl = remove_int(avl, 623);
   avl = remove_int(avl, 769);
-  avl = gpr_avl_add(avl, box(144), box(1072));
-  avl = gpr_avl_add(avl, box(489), box(1073));
+  avl = gpr_avl_add(avl, box(144), box(1072), NULL);
+  avl = gpr_avl_add(avl, box(489), box(1073), NULL);
   avl = remove_int(avl, 15);
-  avl = gpr_avl_add(avl, box(971), box(1075));
+  avl = gpr_avl_add(avl, box(971), box(1075), NULL);
   avl = remove_int(avl, 660);
-  avl = gpr_avl_add(avl, box(255), box(1077));
+  avl = gpr_avl_add(avl, box(255), box(1077), NULL);
   avl = remove_int(avl, 494);
-  avl = gpr_avl_add(avl, box(109), box(1079));
-  avl = gpr_avl_add(avl, box(420), box(1080));
-  avl = gpr_avl_add(avl, box(509), box(1081));
+  avl = gpr_avl_add(avl, box(109), box(1079), NULL);
+  avl = gpr_avl_add(avl, box(420), box(1080), NULL);
+  avl = gpr_avl_add(avl, box(509), box(1081), NULL);
   avl = remove_int(avl, 178);
-  avl = gpr_avl_add(avl, box(216), box(1083));
-  avl = gpr_avl_add(avl, box(707), box(1084));
-  avl = gpr_avl_add(avl, box(411), box(1085));
-  avl = gpr_avl_add(avl, box(352), box(1086));
+  avl = gpr_avl_add(avl, box(216), box(1083), NULL);
+  avl = gpr_avl_add(avl, box(707), box(1084), NULL);
+  avl = gpr_avl_add(avl, box(411), box(1085), NULL);
+  avl = gpr_avl_add(avl, box(352), box(1086), NULL);
   avl = remove_int(avl, 983);
-  avl = gpr_avl_add(avl, box(6), box(1088));
-  avl = gpr_avl_add(avl, box(1014), box(1089));
+  avl = gpr_avl_add(avl, box(6), box(1088), NULL);
+  avl = gpr_avl_add(avl, box(1014), box(1089), NULL);
   avl = remove_int(avl, 98);
   avl = remove_int(avl, 325);
-  avl = gpr_avl_add(avl, box(851), box(1092));
+  avl = gpr_avl_add(avl, box(851), box(1092), NULL);
   avl = remove_int(avl, 553);
-  avl = gpr_avl_add(avl, box(218), box(1094));
-  avl = gpr_avl_add(avl, box(261), box(1095));
+  avl = gpr_avl_add(avl, box(218), box(1094), NULL);
+  avl = gpr_avl_add(avl, box(261), box(1095), NULL);
   avl = remove_int(avl, 31);
-  avl = gpr_avl_add(avl, box(872), box(1097));
+  avl = gpr_avl_add(avl, box(872), box(1097), NULL);
   avl = remove_int(avl, 543);
   avl = remove_int(avl, 314);
   avl = remove_int(avl, 443);
-  avl = gpr_avl_add(avl, box(533), box(1101));
+  avl = gpr_avl_add(avl, box(533), box(1101), NULL);
   avl = remove_int(avl, 881);
   avl = remove_int(avl, 269);
   avl = remove_int(avl, 940);
@@ -2246,114 +2248,114 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 773);
   avl = remove_int(avl, 790);
   avl = remove_int(avl, 345);
-  avl = gpr_avl_add(avl, box(965), box(1110));
+  avl = gpr_avl_add(avl, box(965), box(1110), NULL);
   avl = remove_int(avl, 622);
-  avl = gpr_avl_add(avl, box(352), box(1112));
+  avl = gpr_avl_add(avl, box(352), box(1112), NULL);
   avl = remove_int(avl, 182);
-  avl = gpr_avl_add(avl, box(534), box(1114));
-  avl = gpr_avl_add(avl, box(97), box(1115));
-  avl = gpr_avl_add(avl, box(198), box(1116));
+  avl = gpr_avl_add(avl, box(534), box(1114), NULL);
+  avl = gpr_avl_add(avl, box(97), box(1115), NULL);
+  avl = gpr_avl_add(avl, box(198), box(1116), NULL);
   avl = remove_int(avl, 750);
-  avl = gpr_avl_add(avl, box(98), box(1118));
+  avl = gpr_avl_add(avl, box(98), box(1118), NULL);
   avl = remove_int(avl, 943);
-  avl = gpr_avl_add(avl, box(254), box(1120));
-  avl = gpr_avl_add(avl, box(30), box(1121));
+  avl = gpr_avl_add(avl, box(254), box(1120), NULL);
+  avl = gpr_avl_add(avl, box(30), box(1121), NULL);
   avl = remove_int(avl, 14);
   avl = remove_int(avl, 475);
   avl = remove_int(avl, 82);
-  avl = gpr_avl_add(avl, box(789), box(1125));
-  avl = gpr_avl_add(avl, box(402), box(1126));
+  avl = gpr_avl_add(avl, box(789), box(1125), NULL);
+  avl = gpr_avl_add(avl, box(402), box(1126), NULL);
   avl = remove_int(avl, 1019);
-  avl = gpr_avl_add(avl, box(858), box(1128));
-  avl = gpr_avl_add(avl, box(625), box(1129));
+  avl = gpr_avl_add(avl, box(858), box(1128), NULL);
+  avl = gpr_avl_add(avl, box(625), box(1129), NULL);
   avl = remove_int(avl, 675);
   avl = remove_int(avl, 323);
-  avl = gpr_avl_add(avl, box(329), box(1132));
+  avl = gpr_avl_add(avl, box(329), box(1132), NULL);
   avl = remove_int(avl, 929);
   avl = remove_int(avl, 44);
-  avl = gpr_avl_add(avl, box(443), box(1135));
-  avl = gpr_avl_add(avl, box(653), box(1136));
-  avl = gpr_avl_add(avl, box(750), box(1137));
-  avl = gpr_avl_add(avl, box(252), box(1138));
-  avl = gpr_avl_add(avl, box(449), box(1139));
+  avl = gpr_avl_add(avl, box(443), box(1135), NULL);
+  avl = gpr_avl_add(avl, box(653), box(1136), NULL);
+  avl = gpr_avl_add(avl, box(750), box(1137), NULL);
+  avl = gpr_avl_add(avl, box(252), box(1138), NULL);
+  avl = gpr_avl_add(avl, box(449), box(1139), NULL);
   avl = remove_int(avl, 1022);
   avl = remove_int(avl, 357);
   avl = remove_int(avl, 602);
   avl = remove_int(avl, 131);
-  avl = gpr_avl_add(avl, box(531), box(1144));
+  avl = gpr_avl_add(avl, box(531), box(1144), NULL);
   avl = remove_int(avl, 806);
-  avl = gpr_avl_add(avl, box(455), box(1146));
+  avl = gpr_avl_add(avl, box(455), box(1146), NULL);
   avl = remove_int(avl, 31);
-  avl = gpr_avl_add(avl, box(154), box(1148));
-  avl = gpr_avl_add(avl, box(189), box(1149));
+  avl = gpr_avl_add(avl, box(154), box(1148), NULL);
+  avl = gpr_avl_add(avl, box(189), box(1149), NULL);
   avl = remove_int(avl, 786);
-  avl = gpr_avl_add(avl, box(496), box(1151));
-  avl = gpr_avl_add(avl, box(81), box(1152));
-  avl = gpr_avl_add(avl, box(59), box(1153));
+  avl = gpr_avl_add(avl, box(496), box(1151), NULL);
+  avl = gpr_avl_add(avl, box(81), box(1152), NULL);
+  avl = gpr_avl_add(avl, box(59), box(1153), NULL);
   avl = remove_int(avl, 424);
   avl = remove_int(avl, 668);
-  avl = gpr_avl_add(avl, box(723), box(1156));
-  avl = gpr_avl_add(avl, box(822), box(1157));
-  avl = gpr_avl_add(avl, box(354), box(1158));
+  avl = gpr_avl_add(avl, box(723), box(1156), NULL);
+  avl = gpr_avl_add(avl, box(822), box(1157), NULL);
+  avl = gpr_avl_add(avl, box(354), box(1158), NULL);
   avl = remove_int(avl, 738);
-  avl = gpr_avl_add(avl, box(686), box(1160));
-  avl = gpr_avl_add(avl, box(43), box(1161));
-  avl = gpr_avl_add(avl, box(625), box(1162));
-  avl = gpr_avl_add(avl, box(902), box(1163));
-  avl = gpr_avl_add(avl, box(12), box(1164));
-  avl = gpr_avl_add(avl, box(977), box(1165));
-  avl = gpr_avl_add(avl, box(699), box(1166));
-  avl = gpr_avl_add(avl, box(189), box(1167));
+  avl = gpr_avl_add(avl, box(686), box(1160), NULL);
+  avl = gpr_avl_add(avl, box(43), box(1161), NULL);
+  avl = gpr_avl_add(avl, box(625), box(1162), NULL);
+  avl = gpr_avl_add(avl, box(902), box(1163), NULL);
+  avl = gpr_avl_add(avl, box(12), box(1164), NULL);
+  avl = gpr_avl_add(avl, box(977), box(1165), NULL);
+  avl = gpr_avl_add(avl, box(699), box(1166), NULL);
+  avl = gpr_avl_add(avl, box(189), box(1167), NULL);
   avl = remove_int(avl, 672);
   avl = remove_int(avl, 90);
   avl = remove_int(avl, 757);
   avl = remove_int(avl, 494);
-  avl = gpr_avl_add(avl, box(759), box(1172));
+  avl = gpr_avl_add(avl, box(759), box(1172), NULL);
   avl = remove_int(avl, 758);
   avl = remove_int(avl, 222);
-  avl = gpr_avl_add(avl, box(975), box(1175));
+  avl = gpr_avl_add(avl, box(975), box(1175), NULL);
   avl = remove_int(avl, 993);
-  avl = gpr_avl_add(avl, box(2), box(1177));
-  avl = gpr_avl_add(avl, box(70), box(1178));
+  avl = gpr_avl_add(avl, box(2), box(1177), NULL);
+  avl = gpr_avl_add(avl, box(70), box(1178), NULL);
   avl = remove_int(avl, 350);
   avl = remove_int(avl, 972);
   avl = remove_int(avl, 880);
-  avl = gpr_avl_add(avl, box(753), box(1182));
+  avl = gpr_avl_add(avl, box(753), box(1182), NULL);
   avl = remove_int(avl, 404);
-  avl = gpr_avl_add(avl, box(294), box(1184));
+  avl = gpr_avl_add(avl, box(294), box(1184), NULL);
   avl = remove_int(avl, 474);
-  avl = gpr_avl_add(avl, box(228), box(1186));
-  avl = gpr_avl_add(avl, box(484), box(1187));
+  avl = gpr_avl_add(avl, box(228), box(1186), NULL);
+  avl = gpr_avl_add(avl, box(484), box(1187), NULL);
   avl = remove_int(avl, 238);
   avl = remove_int(avl, 53);
   avl = remove_int(avl, 691);
-  avl = gpr_avl_add(avl, box(345), box(1191));
+  avl = gpr_avl_add(avl, box(345), box(1191), NULL);
   avl = remove_int(avl, 0);
-  avl = gpr_avl_add(avl, box(230), box(1193));
+  avl = gpr_avl_add(avl, box(230), box(1193), NULL);
   avl = remove_int(avl, 227);
   avl = remove_int(avl, 152);
-  avl = gpr_avl_add(avl, box(884), box(1196));
+  avl = gpr_avl_add(avl, box(884), box(1196), NULL);
   avl = remove_int(avl, 823);
   avl = remove_int(avl, 53);
-  avl = gpr_avl_add(avl, box(1015), box(1199));
-  avl = gpr_avl_add(avl, box(697), box(1200));
-  avl = gpr_avl_add(avl, box(376), box(1201));
+  avl = gpr_avl_add(avl, box(1015), box(1199), NULL);
+  avl = gpr_avl_add(avl, box(697), box(1200), NULL);
+  avl = gpr_avl_add(avl, box(376), box(1201), NULL);
   avl = remove_int(avl, 411);
-  avl = gpr_avl_add(avl, box(888), box(1203));
+  avl = gpr_avl_add(avl, box(888), box(1203), NULL);
   avl = remove_int(avl, 55);
-  avl = gpr_avl_add(avl, box(85), box(1205));
+  avl = gpr_avl_add(avl, box(85), box(1205), NULL);
   avl = remove_int(avl, 947);
   avl = remove_int(avl, 382);
   avl = remove_int(avl, 777);
-  avl = gpr_avl_add(avl, box(1017), box(1209));
-  avl = gpr_avl_add(avl, box(169), box(1210));
-  avl = gpr_avl_add(avl, box(156), box(1211));
+  avl = gpr_avl_add(avl, box(1017), box(1209), NULL);
+  avl = gpr_avl_add(avl, box(169), box(1210), NULL);
+  avl = gpr_avl_add(avl, box(156), box(1211), NULL);
   avl = remove_int(avl, 153);
   avl = remove_int(avl, 642);
   avl = remove_int(avl, 158);
-  avl = gpr_avl_add(avl, box(554), box(1215));
-  avl = gpr_avl_add(avl, box(76), box(1216));
-  avl = gpr_avl_add(avl, box(756), box(1217));
+  avl = gpr_avl_add(avl, box(554), box(1215), NULL);
+  avl = gpr_avl_add(avl, box(76), box(1216), NULL);
+  avl = gpr_avl_add(avl, box(756), box(1217), NULL);
   avl = remove_int(avl, 767);
   avl = remove_int(avl, 112);
   avl = remove_int(avl, 539);
@@ -2362,37 +2364,37 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 385);
   avl = remove_int(avl, 514);
   avl = remove_int(avl, 362);
-  avl = gpr_avl_add(avl, box(523), box(1226));
-  avl = gpr_avl_add(avl, box(712), box(1227));
-  avl = gpr_avl_add(avl, box(474), box(1228));
-  avl = gpr_avl_add(avl, box(882), box(1229));
-  avl = gpr_avl_add(avl, box(965), box(1230));
+  avl = gpr_avl_add(avl, box(523), box(1226), NULL);
+  avl = gpr_avl_add(avl, box(712), box(1227), NULL);
+  avl = gpr_avl_add(avl, box(474), box(1228), NULL);
+  avl = gpr_avl_add(avl, box(882), box(1229), NULL);
+  avl = gpr_avl_add(avl, box(965), box(1230), NULL);
   avl = remove_int(avl, 464);
-  avl = gpr_avl_add(avl, box(319), box(1232));
-  avl = gpr_avl_add(avl, box(504), box(1233));
+  avl = gpr_avl_add(avl, box(319), box(1232), NULL);
+  avl = gpr_avl_add(avl, box(504), box(1233), NULL);
   avl = remove_int(avl, 818);
-  avl = gpr_avl_add(avl, box(884), box(1235));
-  avl = gpr_avl_add(avl, box(813), box(1236));
-  avl = gpr_avl_add(avl, box(795), box(1237));
+  avl = gpr_avl_add(avl, box(884), box(1235), NULL);
+  avl = gpr_avl_add(avl, box(813), box(1236), NULL);
+  avl = gpr_avl_add(avl, box(795), box(1237), NULL);
   avl = remove_int(avl, 306);
-  avl = gpr_avl_add(avl, box(799), box(1239));
+  avl = gpr_avl_add(avl, box(799), box(1239), NULL);
   avl = remove_int(avl, 534);
-  avl = gpr_avl_add(avl, box(480), box(1241));
-  avl = gpr_avl_add(avl, box(656), box(1242));
-  avl = gpr_avl_add(avl, box(709), box(1243));
-  avl = gpr_avl_add(avl, box(500), box(1244));
+  avl = gpr_avl_add(avl, box(480), box(1241), NULL);
+  avl = gpr_avl_add(avl, box(656), box(1242), NULL);
+  avl = gpr_avl_add(avl, box(709), box(1243), NULL);
+  avl = gpr_avl_add(avl, box(500), box(1244), NULL);
   avl = remove_int(avl, 740);
-  avl = gpr_avl_add(avl, box(980), box(1246));
-  avl = gpr_avl_add(avl, box(458), box(1247));
+  avl = gpr_avl_add(avl, box(980), box(1246), NULL);
+  avl = gpr_avl_add(avl, box(458), box(1247), NULL);
   avl = remove_int(avl, 377);
   avl = remove_int(avl, 338);
-  avl = gpr_avl_add(avl, box(554), box(1250));
-  avl = gpr_avl_add(avl, box(504), box(1251));
-  avl = gpr_avl_add(avl, box(603), box(1252));
-  avl = gpr_avl_add(avl, box(761), box(1253));
+  avl = gpr_avl_add(avl, box(554), box(1250), NULL);
+  avl = gpr_avl_add(avl, box(504), box(1251), NULL);
+  avl = gpr_avl_add(avl, box(603), box(1252), NULL);
+  avl = gpr_avl_add(avl, box(761), box(1253), NULL);
   avl = remove_int(avl, 431);
-  avl = gpr_avl_add(avl, box(707), box(1255));
-  avl = gpr_avl_add(avl, box(673), box(1256));
+  avl = gpr_avl_add(avl, box(707), box(1255), NULL);
+  avl = gpr_avl_add(avl, box(673), box(1256), NULL);
   avl = remove_int(avl, 998);
   avl = remove_int(avl, 332);
   avl = remove_int(avl, 413);
@@ -2400,448 +2402,448 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 249);
   avl = remove_int(avl, 309);
   avl = remove_int(avl, 459);
-  avl = gpr_avl_add(avl, box(645), box(1264));
+  avl = gpr_avl_add(avl, box(645), box(1264), NULL);
   avl = remove_int(avl, 858);
   avl = remove_int(avl, 997);
-  avl = gpr_avl_add(avl, box(519), box(1267));
+  avl = gpr_avl_add(avl, box(519), box(1267), NULL);
   avl = remove_int(avl, 614);
   avl = remove_int(avl, 462);
   avl = remove_int(avl, 792);
-  avl = gpr_avl_add(avl, box(987), box(1271));
-  avl = gpr_avl_add(avl, box(309), box(1272));
+  avl = gpr_avl_add(avl, box(987), box(1271), NULL);
+  avl = gpr_avl_add(avl, box(309), box(1272), NULL);
   avl = remove_int(avl, 747);
-  avl = gpr_avl_add(avl, box(621), box(1274));
-  avl = gpr_avl_add(avl, box(450), box(1275));
+  avl = gpr_avl_add(avl, box(621), box(1274), NULL);
+  avl = gpr_avl_add(avl, box(450), box(1275), NULL);
   avl = remove_int(avl, 265);
   avl = remove_int(avl, 8);
   avl = remove_int(avl, 383);
-  avl = gpr_avl_add(avl, box(238), box(1279));
+  avl = gpr_avl_add(avl, box(238), box(1279), NULL);
   avl = remove_int(avl, 241);
-  avl = gpr_avl_add(avl, box(180), box(1281));
-  avl = gpr_avl_add(avl, box(411), box(1282));
-  avl = gpr_avl_add(avl, box(791), box(1283));
-  avl = gpr_avl_add(avl, box(955), box(1284));
+  avl = gpr_avl_add(avl, box(180), box(1281), NULL);
+  avl = gpr_avl_add(avl, box(411), box(1282), NULL);
+  avl = gpr_avl_add(avl, box(791), box(1283), NULL);
+  avl = gpr_avl_add(avl, box(955), box(1284), NULL);
   avl = remove_int(avl, 24);
   avl = remove_int(avl, 375);
-  avl = gpr_avl_add(avl, box(140), box(1287));
+  avl = gpr_avl_add(avl, box(140), box(1287), NULL);
   avl = remove_int(avl, 949);
-  avl = gpr_avl_add(avl, box(301), box(1289));
-  avl = gpr_avl_add(avl, box(0), box(1290));
+  avl = gpr_avl_add(avl, box(301), box(1289), NULL);
+  avl = gpr_avl_add(avl, box(0), box(1290), NULL);
   avl = remove_int(avl, 371);
   avl = remove_int(avl, 427);
   avl = remove_int(avl, 841);
   avl = remove_int(avl, 847);
-  avl = gpr_avl_add(avl, box(814), box(1295));
-  avl = gpr_avl_add(avl, box(127), box(1296));
-  avl = gpr_avl_add(avl, box(279), box(1297));
+  avl = gpr_avl_add(avl, box(814), box(1295), NULL);
+  avl = gpr_avl_add(avl, box(127), box(1296), NULL);
+  avl = gpr_avl_add(avl, box(279), box(1297), NULL);
   avl = remove_int(avl, 669);
   avl = remove_int(avl, 541);
   avl = remove_int(avl, 275);
   avl = remove_int(avl, 299);
   avl = remove_int(avl, 552);
-  avl = gpr_avl_add(avl, box(310), box(1303));
-  avl = gpr_avl_add(avl, box(304), box(1304));
-  avl = gpr_avl_add(avl, box(1), box(1305));
-  avl = gpr_avl_add(avl, box(339), box(1306));
+  avl = gpr_avl_add(avl, box(310), box(1303), NULL);
+  avl = gpr_avl_add(avl, box(304), box(1304), NULL);
+  avl = gpr_avl_add(avl, box(1), box(1305), NULL);
+  avl = gpr_avl_add(avl, box(339), box(1306), NULL);
   avl = remove_int(avl, 570);
   avl = remove_int(avl, 752);
   avl = remove_int(avl, 552);
   avl = remove_int(avl, 442);
   avl = remove_int(avl, 639);
-  avl = gpr_avl_add(avl, box(313), box(1312));
+  avl = gpr_avl_add(avl, box(313), box(1312), NULL);
   avl = remove_int(avl, 85);
-  avl = gpr_avl_add(avl, box(964), box(1314));
-  avl = gpr_avl_add(avl, box(559), box(1315));
+  avl = gpr_avl_add(avl, box(964), box(1314), NULL);
+  avl = gpr_avl_add(avl, box(559), box(1315), NULL);
   avl = remove_int(avl, 167);
-  avl = gpr_avl_add(avl, box(866), box(1317));
+  avl = gpr_avl_add(avl, box(866), box(1317), NULL);
   avl = remove_int(avl, 275);
-  avl = gpr_avl_add(avl, box(173), box(1319));
-  avl = gpr_avl_add(avl, box(765), box(1320));
+  avl = gpr_avl_add(avl, box(173), box(1319), NULL);
+  avl = gpr_avl_add(avl, box(765), box(1320), NULL);
   avl = remove_int(avl, 883);
-  avl = gpr_avl_add(avl, box(547), box(1322));
-  avl = gpr_avl_add(avl, box(847), box(1323));
+  avl = gpr_avl_add(avl, box(547), box(1322), NULL);
+  avl = gpr_avl_add(avl, box(847), box(1323), NULL);
   avl = remove_int(avl, 817);
   avl = remove_int(avl, 850);
   avl = remove_int(avl, 718);
-  avl = gpr_avl_add(avl, box(806), box(1327));
-  avl = gpr_avl_add(avl, box(360), box(1328));
+  avl = gpr_avl_add(avl, box(806), box(1327), NULL);
+  avl = gpr_avl_add(avl, box(360), box(1328), NULL);
   avl = remove_int(avl, 991);
-  avl = gpr_avl_add(avl, box(493), box(1330));
+  avl = gpr_avl_add(avl, box(493), box(1330), NULL);
   avl = remove_int(avl, 516);
-  avl = gpr_avl_add(avl, box(361), box(1332));
+  avl = gpr_avl_add(avl, box(361), box(1332), NULL);
   avl = remove_int(avl, 355);
-  avl = gpr_avl_add(avl, box(512), box(1334));
-  avl = gpr_avl_add(avl, box(191), box(1335));
+  avl = gpr_avl_add(avl, box(512), box(1334), NULL);
+  avl = gpr_avl_add(avl, box(191), box(1335), NULL);
   avl = remove_int(avl, 703);
-  avl = gpr_avl_add(avl, box(333), box(1337));
+  avl = gpr_avl_add(avl, box(333), box(1337), NULL);
   avl = remove_int(avl, 481);
-  avl = gpr_avl_add(avl, box(501), box(1339));
+  avl = gpr_avl_add(avl, box(501), box(1339), NULL);
   avl = remove_int(avl, 532);
   avl = remove_int(avl, 510);
-  avl = gpr_avl_add(avl, box(793), box(1342));
-  avl = gpr_avl_add(avl, box(234), box(1343));
+  avl = gpr_avl_add(avl, box(793), box(1342), NULL);
+  avl = gpr_avl_add(avl, box(234), box(1343), NULL);
   avl = remove_int(avl, 159);
   avl = remove_int(avl, 429);
   avl = remove_int(avl, 728);
   avl = remove_int(avl, 288);
-  avl = gpr_avl_add(avl, box(281), box(1348));
-  avl = gpr_avl_add(avl, box(702), box(1349));
-  avl = gpr_avl_add(avl, box(149), box(1350));
+  avl = gpr_avl_add(avl, box(281), box(1348), NULL);
+  avl = gpr_avl_add(avl, box(702), box(1349), NULL);
+  avl = gpr_avl_add(avl, box(149), box(1350), NULL);
   avl = remove_int(avl, 22);
   avl = remove_int(avl, 944);
   avl = remove_int(avl, 55);
   avl = remove_int(avl, 512);
   avl = remove_int(avl, 676);
   avl = remove_int(avl, 884);
-  avl = gpr_avl_add(avl, box(246), box(1357));
-  avl = gpr_avl_add(avl, box(455), box(1358));
+  avl = gpr_avl_add(avl, box(246), box(1357), NULL);
+  avl = gpr_avl_add(avl, box(455), box(1358), NULL);
   avl = remove_int(avl, 782);
   avl = remove_int(avl, 682);
-  avl = gpr_avl_add(avl, box(243), box(1361));
-  avl = gpr_avl_add(avl, box(109), box(1362));
-  avl = gpr_avl_add(avl, box(452), box(1363));
+  avl = gpr_avl_add(avl, box(243), box(1361), NULL);
+  avl = gpr_avl_add(avl, box(109), box(1362), NULL);
+  avl = gpr_avl_add(avl, box(452), box(1363), NULL);
   avl = remove_int(avl, 151);
-  avl = gpr_avl_add(avl, box(159), box(1365));
+  avl = gpr_avl_add(avl, box(159), box(1365), NULL);
   avl = remove_int(avl, 1023);
-  avl = gpr_avl_add(avl, box(129), box(1367));
-  avl = gpr_avl_add(avl, box(537), box(1368));
+  avl = gpr_avl_add(avl, box(129), box(1367), NULL);
+  avl = gpr_avl_add(avl, box(537), box(1368), NULL);
   avl = remove_int(avl, 321);
-  avl = gpr_avl_add(avl, box(740), box(1370));
+  avl = gpr_avl_add(avl, box(740), box(1370), NULL);
   avl = remove_int(avl, 45);
   avl = remove_int(avl, 136);
-  avl = gpr_avl_add(avl, box(229), box(1373));
+  avl = gpr_avl_add(avl, box(229), box(1373), NULL);
   avl = remove_int(avl, 772);
-  avl = gpr_avl_add(avl, box(181), box(1375));
+  avl = gpr_avl_add(avl, box(181), box(1375), NULL);
   avl = remove_int(avl, 175);
-  avl = gpr_avl_add(avl, box(817), box(1377));
+  avl = gpr_avl_add(avl, box(817), box(1377), NULL);
   avl = remove_int(avl, 956);
-  avl = gpr_avl_add(avl, box(675), box(1379));
-  avl = gpr_avl_add(avl, box(375), box(1380));
+  avl = gpr_avl_add(avl, box(675), box(1379), NULL);
+  avl = gpr_avl_add(avl, box(375), box(1380), NULL);
   avl = remove_int(avl, 384);
-  avl = gpr_avl_add(avl, box(1016), box(1382));
+  avl = gpr_avl_add(avl, box(1016), box(1382), NULL);
   avl = remove_int(avl, 295);
   avl = remove_int(avl, 697);
   avl = remove_int(avl, 554);
   avl = remove_int(avl, 590);
   avl = remove_int(avl, 1014);
-  avl = gpr_avl_add(avl, box(890), box(1388));
-  avl = gpr_avl_add(avl, box(293), box(1389));
+  avl = gpr_avl_add(avl, box(890), box(1388), NULL);
+  avl = gpr_avl_add(avl, box(293), box(1389), NULL);
   avl = remove_int(avl, 207);
   avl = remove_int(avl, 46);
-  avl = gpr_avl_add(avl, box(899), box(1392));
-  avl = gpr_avl_add(avl, box(666), box(1393));
-  avl = gpr_avl_add(avl, box(85), box(1394));
-  avl = gpr_avl_add(avl, box(914), box(1395));
-  avl = gpr_avl_add(avl, box(128), box(1396));
-  avl = gpr_avl_add(avl, box(835), box(1397));
-  avl = gpr_avl_add(avl, box(787), box(1398));
-  avl = gpr_avl_add(avl, box(649), box(1399));
-  avl = gpr_avl_add(avl, box(723), box(1400));
+  avl = gpr_avl_add(avl, box(899), box(1392), NULL);
+  avl = gpr_avl_add(avl, box(666), box(1393), NULL);
+  avl = gpr_avl_add(avl, box(85), box(1394), NULL);
+  avl = gpr_avl_add(avl, box(914), box(1395), NULL);
+  avl = gpr_avl_add(avl, box(128), box(1396), NULL);
+  avl = gpr_avl_add(avl, box(835), box(1397), NULL);
+  avl = gpr_avl_add(avl, box(787), box(1398), NULL);
+  avl = gpr_avl_add(avl, box(649), box(1399), NULL);
+  avl = gpr_avl_add(avl, box(723), box(1400), NULL);
   avl = remove_int(avl, 874);
-  avl = gpr_avl_add(avl, box(778), box(1402));
-  avl = gpr_avl_add(avl, box(1015), box(1403));
-  avl = gpr_avl_add(avl, box(59), box(1404));
-  avl = gpr_avl_add(avl, box(259), box(1405));
-  avl = gpr_avl_add(avl, box(758), box(1406));
+  avl = gpr_avl_add(avl, box(778), box(1402), NULL);
+  avl = gpr_avl_add(avl, box(1015), box(1403), NULL);
+  avl = gpr_avl_add(avl, box(59), box(1404), NULL);
+  avl = gpr_avl_add(avl, box(259), box(1405), NULL);
+  avl = gpr_avl_add(avl, box(758), box(1406), NULL);
   avl = remove_int(avl, 648);
-  avl = gpr_avl_add(avl, box(145), box(1408));
-  avl = gpr_avl_add(avl, box(440), box(1409));
+  avl = gpr_avl_add(avl, box(145), box(1408), NULL);
+  avl = gpr_avl_add(avl, box(440), box(1409), NULL);
   avl = remove_int(avl, 608);
   avl = remove_int(avl, 690);
-  avl = gpr_avl_add(avl, box(605), box(1412));
+  avl = gpr_avl_add(avl, box(605), box(1412), NULL);
   avl = remove_int(avl, 856);
   avl = remove_int(avl, 608);
-  avl = gpr_avl_add(avl, box(829), box(1415));
-  avl = gpr_avl_add(avl, box(660), box(1416));
+  avl = gpr_avl_add(avl, box(829), box(1415), NULL);
+  avl = gpr_avl_add(avl, box(660), box(1416), NULL);
   avl = remove_int(avl, 596);
-  avl = gpr_avl_add(avl, box(519), box(1418));
-  avl = gpr_avl_add(avl, box(35), box(1419));
-  avl = gpr_avl_add(avl, box(871), box(1420));
+  avl = gpr_avl_add(avl, box(519), box(1418), NULL);
+  avl = gpr_avl_add(avl, box(35), box(1419), NULL);
+  avl = gpr_avl_add(avl, box(871), box(1420), NULL);
   avl = remove_int(avl, 845);
-  avl = gpr_avl_add(avl, box(600), box(1422));
-  avl = gpr_avl_add(avl, box(215), box(1423));
+  avl = gpr_avl_add(avl, box(600), box(1422), NULL);
+  avl = gpr_avl_add(avl, box(215), box(1423), NULL);
   avl = remove_int(avl, 761);
-  avl = gpr_avl_add(avl, box(975), box(1425));
+  avl = gpr_avl_add(avl, box(975), box(1425), NULL);
   avl = remove_int(avl, 987);
-  avl = gpr_avl_add(avl, box(58), box(1427));
+  avl = gpr_avl_add(avl, box(58), box(1427), NULL);
   avl = remove_int(avl, 119);
-  avl = gpr_avl_add(avl, box(937), box(1429));
-  avl = gpr_avl_add(avl, box(372), box(1430));
-  avl = gpr_avl_add(avl, box(11), box(1431));
-  avl = gpr_avl_add(avl, box(398), box(1432));
-  avl = gpr_avl_add(avl, box(423), box(1433));
+  avl = gpr_avl_add(avl, box(937), box(1429), NULL);
+  avl = gpr_avl_add(avl, box(372), box(1430), NULL);
+  avl = gpr_avl_add(avl, box(11), box(1431), NULL);
+  avl = gpr_avl_add(avl, box(398), box(1432), NULL);
+  avl = gpr_avl_add(avl, box(423), box(1433), NULL);
   avl = remove_int(avl, 171);
-  avl = gpr_avl_add(avl, box(473), box(1435));
+  avl = gpr_avl_add(avl, box(473), box(1435), NULL);
   avl = remove_int(avl, 752);
   avl = remove_int(avl, 625);
   avl = remove_int(avl, 764);
   avl = remove_int(avl, 49);
-  avl = gpr_avl_add(avl, box(472), box(1440));
+  avl = gpr_avl_add(avl, box(472), box(1440), NULL);
   avl = remove_int(avl, 847);
   avl = remove_int(avl, 642);
   avl = remove_int(avl, 1004);
   avl = remove_int(avl, 795);
   avl = remove_int(avl, 465);
-  avl = gpr_avl_add(avl, box(636), box(1446));
+  avl = gpr_avl_add(avl, box(636), box(1446), NULL);
   avl = remove_int(avl, 152);
-  avl = gpr_avl_add(avl, box(61), box(1448));
+  avl = gpr_avl_add(avl, box(61), box(1448), NULL);
   avl = remove_int(avl, 929);
   avl = remove_int(avl, 9);
-  avl = gpr_avl_add(avl, box(251), box(1451));
-  avl = gpr_avl_add(avl, box(672), box(1452));
-  avl = gpr_avl_add(avl, box(66), box(1453));
+  avl = gpr_avl_add(avl, box(251), box(1451), NULL);
+  avl = gpr_avl_add(avl, box(672), box(1452), NULL);
+  avl = gpr_avl_add(avl, box(66), box(1453), NULL);
   avl = remove_int(avl, 693);
   avl = remove_int(avl, 914);
   avl = remove_int(avl, 116);
   avl = remove_int(avl, 577);
-  avl = gpr_avl_add(avl, box(618), box(1458));
-  avl = gpr_avl_add(avl, box(495), box(1459));
+  avl = gpr_avl_add(avl, box(618), box(1458), NULL);
+  avl = gpr_avl_add(avl, box(495), box(1459), NULL);
   avl = remove_int(avl, 450);
-  avl = gpr_avl_add(avl, box(533), box(1461));
-  avl = gpr_avl_add(avl, box(414), box(1462));
+  avl = gpr_avl_add(avl, box(533), box(1461), NULL);
+  avl = gpr_avl_add(avl, box(414), box(1462), NULL);
   avl = remove_int(avl, 74);
   avl = remove_int(avl, 236);
-  avl = gpr_avl_add(avl, box(707), box(1465));
-  avl = gpr_avl_add(avl, box(357), box(1466));
-  avl = gpr_avl_add(avl, box(1007), box(1467));
-  avl = gpr_avl_add(avl, box(811), box(1468));
-  avl = gpr_avl_add(avl, box(418), box(1469));
-  avl = gpr_avl_add(avl, box(164), box(1470));
-  avl = gpr_avl_add(avl, box(622), box(1471));
+  avl = gpr_avl_add(avl, box(707), box(1465), NULL);
+  avl = gpr_avl_add(avl, box(357), box(1466), NULL);
+  avl = gpr_avl_add(avl, box(1007), box(1467), NULL);
+  avl = gpr_avl_add(avl, box(811), box(1468), NULL);
+  avl = gpr_avl_add(avl, box(418), box(1469), NULL);
+  avl = gpr_avl_add(avl, box(164), box(1470), NULL);
+  avl = gpr_avl_add(avl, box(622), box(1471), NULL);
   avl = remove_int(avl, 22);
   avl = remove_int(avl, 14);
   avl = remove_int(avl, 732);
   avl = remove_int(avl, 7);
   avl = remove_int(avl, 447);
-  avl = gpr_avl_add(avl, box(221), box(1477));
-  avl = gpr_avl_add(avl, box(202), box(1478));
-  avl = gpr_avl_add(avl, box(312), box(1479));
+  avl = gpr_avl_add(avl, box(221), box(1477), NULL);
+  avl = gpr_avl_add(avl, box(202), box(1478), NULL);
+  avl = gpr_avl_add(avl, box(312), box(1479), NULL);
   avl = remove_int(avl, 274);
-  avl = gpr_avl_add(avl, box(684), box(1481));
-  avl = gpr_avl_add(avl, box(954), box(1482));
-  avl = gpr_avl_add(avl, box(637), box(1483));
+  avl = gpr_avl_add(avl, box(684), box(1481), NULL);
+  avl = gpr_avl_add(avl, box(954), box(1482), NULL);
+  avl = gpr_avl_add(avl, box(637), box(1483), NULL);
   avl = remove_int(avl, 716);
-  avl = gpr_avl_add(avl, box(198), box(1485));
+  avl = gpr_avl_add(avl, box(198), box(1485), NULL);
   avl = remove_int(avl, 340);
   avl = remove_int(avl, 137);
   avl = remove_int(avl, 995);
   avl = remove_int(avl, 1004);
-  avl = gpr_avl_add(avl, box(661), box(1490));
-  avl = gpr_avl_add(avl, box(862), box(1491));
+  avl = gpr_avl_add(avl, box(661), box(1490), NULL);
+  avl = gpr_avl_add(avl, box(862), box(1491), NULL);
   avl = remove_int(avl, 527);
-  avl = gpr_avl_add(avl, box(945), box(1493));
+  avl = gpr_avl_add(avl, box(945), box(1493), NULL);
   avl = remove_int(avl, 355);
   avl = remove_int(avl, 144);
-  avl = gpr_avl_add(avl, box(229), box(1496));
-  avl = gpr_avl_add(avl, box(237), box(1497));
+  avl = gpr_avl_add(avl, box(229), box(1496), NULL);
+  avl = gpr_avl_add(avl, box(237), box(1497), NULL);
   avl = remove_int(avl, 471);
   avl = remove_int(avl, 901);
-  avl = gpr_avl_add(avl, box(905), box(1500));
+  avl = gpr_avl_add(avl, box(905), box(1500), NULL);
   avl = remove_int(avl, 19);
   avl = remove_int(avl, 896);
   avl = remove_int(avl, 585);
   avl = remove_int(avl, 308);
-  avl = gpr_avl_add(avl, box(547), box(1505));
-  avl = gpr_avl_add(avl, box(552), box(1506));
-  avl = gpr_avl_add(avl, box(30), box(1507));
-  avl = gpr_avl_add(avl, box(445), box(1508));
+  avl = gpr_avl_add(avl, box(547), box(1505), NULL);
+  avl = gpr_avl_add(avl, box(552), box(1506), NULL);
+  avl = gpr_avl_add(avl, box(30), box(1507), NULL);
+  avl = gpr_avl_add(avl, box(445), box(1508), NULL);
   avl = remove_int(avl, 785);
   avl = remove_int(avl, 185);
-  avl = gpr_avl_add(avl, box(405), box(1511));
-  avl = gpr_avl_add(avl, box(733), box(1512));
-  avl = gpr_avl_add(avl, box(573), box(1513));
-  avl = gpr_avl_add(avl, box(492), box(1514));
-  avl = gpr_avl_add(avl, box(343), box(1515));
-  avl = gpr_avl_add(avl, box(527), box(1516));
-  avl = gpr_avl_add(avl, box(596), box(1517));
-  avl = gpr_avl_add(avl, box(519), box(1518));
+  avl = gpr_avl_add(avl, box(405), box(1511), NULL);
+  avl = gpr_avl_add(avl, box(733), box(1512), NULL);
+  avl = gpr_avl_add(avl, box(573), box(1513), NULL);
+  avl = gpr_avl_add(avl, box(492), box(1514), NULL);
+  avl = gpr_avl_add(avl, box(343), box(1515), NULL);
+  avl = gpr_avl_add(avl, box(527), box(1516), NULL);
+  avl = gpr_avl_add(avl, box(596), box(1517), NULL);
+  avl = gpr_avl_add(avl, box(519), box(1518), NULL);
   avl = remove_int(avl, 243);
   avl = remove_int(avl, 722);
-  avl = gpr_avl_add(avl, box(772), box(1521));
+  avl = gpr_avl_add(avl, box(772), box(1521), NULL);
   avl = remove_int(avl, 152);
   avl = remove_int(avl, 305);
-  avl = gpr_avl_add(avl, box(754), box(1524));
-  avl = gpr_avl_add(avl, box(373), box(1525));
+  avl = gpr_avl_add(avl, box(754), box(1524), NULL);
+  avl = gpr_avl_add(avl, box(373), box(1525), NULL);
   avl = remove_int(avl, 995);
-  avl = gpr_avl_add(avl, box(329), box(1527));
+  avl = gpr_avl_add(avl, box(329), box(1527), NULL);
   avl = remove_int(avl, 397);
-  avl = gpr_avl_add(avl, box(884), box(1529));
+  avl = gpr_avl_add(avl, box(884), box(1529), NULL);
   avl = remove_int(avl, 329);
   avl = remove_int(avl, 240);
-  avl = gpr_avl_add(avl, box(566), box(1532));
-  avl = gpr_avl_add(avl, box(232), box(1533));
+  avl = gpr_avl_add(avl, box(566), box(1532), NULL);
+  avl = gpr_avl_add(avl, box(232), box(1533), NULL);
   avl = remove_int(avl, 993);
-  avl = gpr_avl_add(avl, box(888), box(1535));
+  avl = gpr_avl_add(avl, box(888), box(1535), NULL);
   avl = remove_int(avl, 242);
-  avl = gpr_avl_add(avl, box(941), box(1537));
+  avl = gpr_avl_add(avl, box(941), box(1537), NULL);
   avl = remove_int(avl, 415);
-  avl = gpr_avl_add(avl, box(992), box(1539));
+  avl = gpr_avl_add(avl, box(992), box(1539), NULL);
   avl = remove_int(avl, 289);
-  avl = gpr_avl_add(avl, box(60), box(1541));
-  avl = gpr_avl_add(avl, box(97), box(1542));
+  avl = gpr_avl_add(avl, box(60), box(1541), NULL);
+  avl = gpr_avl_add(avl, box(97), box(1542), NULL);
   avl = remove_int(avl, 965);
   avl = remove_int(avl, 267);
   avl = remove_int(avl, 360);
-  avl = gpr_avl_add(avl, box(5), box(1546));
+  avl = gpr_avl_add(avl, box(5), box(1546), NULL);
   avl = remove_int(avl, 429);
-  avl = gpr_avl_add(avl, box(412), box(1548));
+  avl = gpr_avl_add(avl, box(412), box(1548), NULL);
   avl = remove_int(avl, 632);
   avl = remove_int(avl, 113);
-  avl = gpr_avl_add(avl, box(48), box(1551));
-  avl = gpr_avl_add(avl, box(108), box(1552));
-  avl = gpr_avl_add(avl, box(750), box(1553));
+  avl = gpr_avl_add(avl, box(48), box(1551), NULL);
+  avl = gpr_avl_add(avl, box(108), box(1552), NULL);
+  avl = gpr_avl_add(avl, box(750), box(1553), NULL);
   avl = remove_int(avl, 188);
-  avl = gpr_avl_add(avl, box(668), box(1555));
+  avl = gpr_avl_add(avl, box(668), box(1555), NULL);
   avl = remove_int(avl, 37);
   avl = remove_int(avl, 737);
-  avl = gpr_avl_add(avl, box(93), box(1558));
-  avl = gpr_avl_add(avl, box(628), box(1559));
-  avl = gpr_avl_add(avl, box(480), box(1560));
+  avl = gpr_avl_add(avl, box(93), box(1558), NULL);
+  avl = gpr_avl_add(avl, box(628), box(1559), NULL);
+  avl = gpr_avl_add(avl, box(480), box(1560), NULL);
   avl = remove_int(avl, 958);
   avl = remove_int(avl, 565);
   avl = remove_int(avl, 32);
   avl = remove_int(avl, 1);
   avl = remove_int(avl, 335);
-  avl = gpr_avl_add(avl, box(136), box(1566));
-  avl = gpr_avl_add(avl, box(469), box(1567));
+  avl = gpr_avl_add(avl, box(136), box(1566), NULL);
+  avl = gpr_avl_add(avl, box(469), box(1567), NULL);
   avl = remove_int(avl, 349);
-  avl = gpr_avl_add(avl, box(768), box(1569));
-  avl = gpr_avl_add(avl, box(915), box(1570));
+  avl = gpr_avl_add(avl, box(768), box(1569), NULL);
+  avl = gpr_avl_add(avl, box(915), box(1570), NULL);
   avl = remove_int(avl, 1014);
-  avl = gpr_avl_add(avl, box(117), box(1572));
+  avl = gpr_avl_add(avl, box(117), box(1572), NULL);
   avl = remove_int(avl, 62);
-  avl = gpr_avl_add(avl, box(382), box(1574));
+  avl = gpr_avl_add(avl, box(382), box(1574), NULL);
   avl = remove_int(avl, 571);
-  avl = gpr_avl_add(avl, box(655), box(1576));
-  avl = gpr_avl_add(avl, box(323), box(1577));
+  avl = gpr_avl_add(avl, box(655), box(1576), NULL);
+  avl = gpr_avl_add(avl, box(323), box(1577), NULL);
   avl = remove_int(avl, 869);
   avl = remove_int(avl, 151);
-  avl = gpr_avl_add(avl, box(1019), box(1580));
-  avl = gpr_avl_add(avl, box(984), box(1581));
-  avl = gpr_avl_add(avl, box(870), box(1582));
-  avl = gpr_avl_add(avl, box(376), box(1583));
+  avl = gpr_avl_add(avl, box(1019), box(1580), NULL);
+  avl = gpr_avl_add(avl, box(984), box(1581), NULL);
+  avl = gpr_avl_add(avl, box(870), box(1582), NULL);
+  avl = gpr_avl_add(avl, box(376), box(1583), NULL);
   avl = remove_int(avl, 625);
-  avl = gpr_avl_add(avl, box(733), box(1585));
+  avl = gpr_avl_add(avl, box(733), box(1585), NULL);
   avl = remove_int(avl, 532);
   avl = remove_int(avl, 444);
-  avl = gpr_avl_add(avl, box(428), box(1588));
-  avl = gpr_avl_add(avl, box(860), box(1589));
-  avl = gpr_avl_add(avl, box(173), box(1590));
+  avl = gpr_avl_add(avl, box(428), box(1588), NULL);
+  avl = gpr_avl_add(avl, box(860), box(1589), NULL);
+  avl = gpr_avl_add(avl, box(173), box(1590), NULL);
   avl = remove_int(avl, 649);
   avl = remove_int(avl, 913);
   avl = remove_int(avl, 1);
   avl = remove_int(avl, 304);
-  avl = gpr_avl_add(avl, box(604), box(1595));
-  avl = gpr_avl_add(avl, box(639), box(1596));
+  avl = gpr_avl_add(avl, box(604), box(1595), NULL);
+  avl = gpr_avl_add(avl, box(639), box(1596), NULL);
   avl = remove_int(avl, 431);
-  avl = gpr_avl_add(avl, box(993), box(1598));
+  avl = gpr_avl_add(avl, box(993), box(1598), NULL);
   avl = remove_int(avl, 681);
   avl = remove_int(avl, 927);
-  avl = gpr_avl_add(avl, box(87), box(1601));
-  avl = gpr_avl_add(avl, box(91), box(1602));
+  avl = gpr_avl_add(avl, box(87), box(1601), NULL);
+  avl = gpr_avl_add(avl, box(91), box(1602), NULL);
   avl = remove_int(avl, 61);
   avl = remove_int(avl, 14);
   avl = remove_int(avl, 305);
   avl = remove_int(avl, 304);
   avl = remove_int(avl, 1016);
-  avl = gpr_avl_add(avl, box(903), box(1608));
-  avl = gpr_avl_add(avl, box(951), box(1609));
-  avl = gpr_avl_add(avl, box(146), box(1610));
-  avl = gpr_avl_add(avl, box(482), box(1611));
-  avl = gpr_avl_add(avl, box(71), box(1612));
+  avl = gpr_avl_add(avl, box(903), box(1608), NULL);
+  avl = gpr_avl_add(avl, box(951), box(1609), NULL);
+  avl = gpr_avl_add(avl, box(146), box(1610), NULL);
+  avl = gpr_avl_add(avl, box(482), box(1611), NULL);
+  avl = gpr_avl_add(avl, box(71), box(1612), NULL);
   avl = remove_int(avl, 246);
   avl = remove_int(avl, 696);
-  avl = gpr_avl_add(avl, box(636), box(1615));
-  avl = gpr_avl_add(avl, box(295), box(1616));
+  avl = gpr_avl_add(avl, box(636), box(1615), NULL);
+  avl = gpr_avl_add(avl, box(295), box(1616), NULL);
   avl = remove_int(avl, 11);
   avl = remove_int(avl, 231);
-  avl = gpr_avl_add(avl, box(905), box(1619));
-  avl = gpr_avl_add(avl, box(993), box(1620));
-  avl = gpr_avl_add(avl, box(433), box(1621));
-  avl = gpr_avl_add(avl, box(117), box(1622));
-  avl = gpr_avl_add(avl, box(467), box(1623));
+  avl = gpr_avl_add(avl, box(905), box(1619), NULL);
+  avl = gpr_avl_add(avl, box(993), box(1620), NULL);
+  avl = gpr_avl_add(avl, box(433), box(1621), NULL);
+  avl = gpr_avl_add(avl, box(117), box(1622), NULL);
+  avl = gpr_avl_add(avl, box(467), box(1623), NULL);
   avl = remove_int(avl, 419);
-  avl = gpr_avl_add(avl, box(179), box(1625));
+  avl = gpr_avl_add(avl, box(179), box(1625), NULL);
   avl = remove_int(avl, 926);
   avl = remove_int(avl, 326);
-  avl = gpr_avl_add(avl, box(551), box(1628));
+  avl = gpr_avl_add(avl, box(551), box(1628), NULL);
   avl = remove_int(avl, 14);
   avl = remove_int(avl, 476);
   avl = remove_int(avl, 823);
-  avl = gpr_avl_add(avl, box(350), box(1632));
-  avl = gpr_avl_add(avl, box(133), box(1633));
+  avl = gpr_avl_add(avl, box(350), box(1632), NULL);
+  avl = gpr_avl_add(avl, box(133), box(1633), NULL);
   avl = remove_int(avl, 906);
-  avl = gpr_avl_add(avl, box(827), box(1635));
-  avl = gpr_avl_add(avl, box(201), box(1636));
+  avl = gpr_avl_add(avl, box(827), box(1635), NULL);
+  avl = gpr_avl_add(avl, box(201), box(1636), NULL);
   avl = remove_int(avl, 124);
   avl = remove_int(avl, 662);
-  avl = gpr_avl_add(avl, box(314), box(1639));
-  avl = gpr_avl_add(avl, box(986), box(1640));
-  avl = gpr_avl_add(avl, box(622), box(1641));
+  avl = gpr_avl_add(avl, box(314), box(1639), NULL);
+  avl = gpr_avl_add(avl, box(986), box(1640), NULL);
+  avl = gpr_avl_add(avl, box(622), box(1641), NULL);
   avl = remove_int(avl, 130);
-  avl = gpr_avl_add(avl, box(861), box(1643));
+  avl = gpr_avl_add(avl, box(861), box(1643), NULL);
   avl = remove_int(avl, 497);
   avl = remove_int(avl, 905);
-  avl = gpr_avl_add(avl, box(502), box(1646));
+  avl = gpr_avl_add(avl, box(502), box(1646), NULL);
   avl = remove_int(avl, 721);
-  avl = gpr_avl_add(avl, box(514), box(1648));
-  avl = gpr_avl_add(avl, box(410), box(1649));
+  avl = gpr_avl_add(avl, box(514), box(1648), NULL);
+  avl = gpr_avl_add(avl, box(410), box(1649), NULL);
   avl = remove_int(avl, 869);
   avl = remove_int(avl, 247);
-  avl = gpr_avl_add(avl, box(450), box(1652));
+  avl = gpr_avl_add(avl, box(450), box(1652), NULL);
   avl = remove_int(avl, 364);
-  avl = gpr_avl_add(avl, box(963), box(1654));
-  avl = gpr_avl_add(avl, box(146), box(1655));
+  avl = gpr_avl_add(avl, box(963), box(1654), NULL);
+  avl = gpr_avl_add(avl, box(146), box(1655), NULL);
   avl = remove_int(avl, 147);
   avl = remove_int(avl, 789);
-  avl = gpr_avl_add(avl, box(693), box(1658));
-  avl = gpr_avl_add(avl, box(959), box(1659));
+  avl = gpr_avl_add(avl, box(693), box(1658), NULL);
+  avl = gpr_avl_add(avl, box(959), box(1659), NULL);
   avl = remove_int(avl, 478);
-  avl = gpr_avl_add(avl, box(116), box(1661));
-  avl = gpr_avl_add(avl, box(520), box(1662));
-  avl = gpr_avl_add(avl, box(809), box(1663));
-  avl = gpr_avl_add(avl, box(667), box(1664));
-  avl = gpr_avl_add(avl, box(406), box(1665));
+  avl = gpr_avl_add(avl, box(116), box(1661), NULL);
+  avl = gpr_avl_add(avl, box(520), box(1662), NULL);
+  avl = gpr_avl_add(avl, box(809), box(1663), NULL);
+  avl = gpr_avl_add(avl, box(667), box(1664), NULL);
+  avl = gpr_avl_add(avl, box(406), box(1665), NULL);
   avl = remove_int(avl, 409);
-  avl = gpr_avl_add(avl, box(558), box(1667));
-  avl = gpr_avl_add(avl, box(0), box(1668));
-  avl = gpr_avl_add(avl, box(948), box(1669));
-  avl = gpr_avl_add(avl, box(576), box(1670));
+  avl = gpr_avl_add(avl, box(558), box(1667), NULL);
+  avl = gpr_avl_add(avl, box(0), box(1668), NULL);
+  avl = gpr_avl_add(avl, box(948), box(1669), NULL);
+  avl = gpr_avl_add(avl, box(576), box(1670), NULL);
   avl = remove_int(avl, 864);
   avl = remove_int(avl, 840);
   avl = remove_int(avl, 1001);
-  avl = gpr_avl_add(avl, box(232), box(1674));
+  avl = gpr_avl_add(avl, box(232), box(1674), NULL);
   avl = remove_int(avl, 676);
   avl = remove_int(avl, 752);
   avl = remove_int(avl, 667);
   avl = remove_int(avl, 605);
-  avl = gpr_avl_add(avl, box(258), box(1679));
-  avl = gpr_avl_add(avl, box(648), box(1680));
-  avl = gpr_avl_add(avl, box(761), box(1681));
+  avl = gpr_avl_add(avl, box(258), box(1679), NULL);
+  avl = gpr_avl_add(avl, box(648), box(1680), NULL);
+  avl = gpr_avl_add(avl, box(761), box(1681), NULL);
   avl = remove_int(avl, 293);
   avl = remove_int(avl, 893);
-  avl = gpr_avl_add(avl, box(194), box(1684));
+  avl = gpr_avl_add(avl, box(194), box(1684), NULL);
   avl = remove_int(avl, 233);
-  avl = gpr_avl_add(avl, box(888), box(1686));
+  avl = gpr_avl_add(avl, box(888), box(1686), NULL);
   avl = remove_int(avl, 470);
   avl = remove_int(avl, 703);
   avl = remove_int(avl, 190);
   avl = remove_int(avl, 359);
-  avl = gpr_avl_add(avl, box(621), box(1691));
+  avl = gpr_avl_add(avl, box(621), box(1691), NULL);
   avl = remove_int(avl, 634);
   avl = remove_int(avl, 335);
-  avl = gpr_avl_add(avl, box(718), box(1694));
-  avl = gpr_avl_add(avl, box(463), box(1695));
-  avl = gpr_avl_add(avl, box(233), box(1696));
+  avl = gpr_avl_add(avl, box(718), box(1694), NULL);
+  avl = gpr_avl_add(avl, box(463), box(1695), NULL);
+  avl = gpr_avl_add(avl, box(233), box(1696), NULL);
   avl = remove_int(avl, 376);
   avl = remove_int(avl, 496);
   avl = remove_int(avl, 819);
   avl = remove_int(avl, 38);
   avl = remove_int(avl, 436);
   avl = remove_int(avl, 102);
-  avl = gpr_avl_add(avl, box(607), box(1703));
+  avl = gpr_avl_add(avl, box(607), box(1703), NULL);
   avl = remove_int(avl, 329);
-  avl = gpr_avl_add(avl, box(716), box(1705));
+  avl = gpr_avl_add(avl, box(716), box(1705), NULL);
   avl = remove_int(avl, 639);
   avl = remove_int(avl, 775);
   avl = remove_int(avl, 578);
@@ -2849,402 +2851,402 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 679);
   avl = remove_int(avl, 615);
   avl = remove_int(avl, 104);
-  avl = gpr_avl_add(avl, box(414), box(1713));
-  avl = gpr_avl_add(avl, box(212), box(1714));
-  avl = gpr_avl_add(avl, box(266), box(1715));
-  avl = gpr_avl_add(avl, box(238), box(1716));
+  avl = gpr_avl_add(avl, box(414), box(1713), NULL);
+  avl = gpr_avl_add(avl, box(212), box(1714), NULL);
+  avl = gpr_avl_add(avl, box(266), box(1715), NULL);
+  avl = gpr_avl_add(avl, box(238), box(1716), NULL);
   avl = remove_int(avl, 153);
-  avl = gpr_avl_add(avl, box(585), box(1718));
+  avl = gpr_avl_add(avl, box(585), box(1718), NULL);
   avl = remove_int(avl, 121);
-  avl = gpr_avl_add(avl, box(534), box(1720));
+  avl = gpr_avl_add(avl, box(534), box(1720), NULL);
   avl = remove_int(avl, 579);
-  avl = gpr_avl_add(avl, box(127), box(1722));
-  avl = gpr_avl_add(avl, box(399), box(1723));
+  avl = gpr_avl_add(avl, box(127), box(1722), NULL);
+  avl = gpr_avl_add(avl, box(399), box(1723), NULL);
   avl = remove_int(avl, 417);
-  avl = gpr_avl_add(avl, box(978), box(1725));
-  avl = gpr_avl_add(avl, box(768), box(1726));
+  avl = gpr_avl_add(avl, box(978), box(1725), NULL);
+  avl = gpr_avl_add(avl, box(768), box(1726), NULL);
   avl = remove_int(avl, 985);
-  avl = gpr_avl_add(avl, box(536), box(1728));
-  avl = gpr_avl_add(avl, box(449), box(1729));
-  avl = gpr_avl_add(avl, box(586), box(1730));
+  avl = gpr_avl_add(avl, box(536), box(1728), NULL);
+  avl = gpr_avl_add(avl, box(449), box(1729), NULL);
+  avl = gpr_avl_add(avl, box(586), box(1730), NULL);
   avl = remove_int(avl, 998);
   avl = remove_int(avl, 394);
   avl = remove_int(avl, 141);
-  avl = gpr_avl_add(avl, box(889), box(1734));
-  avl = gpr_avl_add(avl, box(871), box(1735));
-  avl = gpr_avl_add(avl, box(76), box(1736));
-  avl = gpr_avl_add(avl, box(549), box(1737));
-  avl = gpr_avl_add(avl, box(757), box(1738));
+  avl = gpr_avl_add(avl, box(889), box(1734), NULL);
+  avl = gpr_avl_add(avl, box(871), box(1735), NULL);
+  avl = gpr_avl_add(avl, box(76), box(1736), NULL);
+  avl = gpr_avl_add(avl, box(549), box(1737), NULL);
+  avl = gpr_avl_add(avl, box(757), box(1738), NULL);
   avl = remove_int(avl, 908);
-  avl = gpr_avl_add(avl, box(789), box(1740));
+  avl = gpr_avl_add(avl, box(789), box(1740), NULL);
   avl = remove_int(avl, 224);
-  avl = gpr_avl_add(avl, box(407), box(1742));
-  avl = gpr_avl_add(avl, box(381), box(1743));
-  avl = gpr_avl_add(avl, box(561), box(1744));
-  avl = gpr_avl_add(avl, box(667), box(1745));
-  avl = gpr_avl_add(avl, box(522), box(1746));
-  avl = gpr_avl_add(avl, box(948), box(1747));
+  avl = gpr_avl_add(avl, box(407), box(1742), NULL);
+  avl = gpr_avl_add(avl, box(381), box(1743), NULL);
+  avl = gpr_avl_add(avl, box(561), box(1744), NULL);
+  avl = gpr_avl_add(avl, box(667), box(1745), NULL);
+  avl = gpr_avl_add(avl, box(522), box(1746), NULL);
+  avl = gpr_avl_add(avl, box(948), box(1747), NULL);
   avl = remove_int(avl, 770);
-  avl = gpr_avl_add(avl, box(872), box(1749));
-  avl = gpr_avl_add(avl, box(327), box(1750));
+  avl = gpr_avl_add(avl, box(872), box(1749), NULL);
+  avl = gpr_avl_add(avl, box(327), box(1750), NULL);
   avl = remove_int(avl, 10);
-  avl = gpr_avl_add(avl, box(122), box(1752));
+  avl = gpr_avl_add(avl, box(122), box(1752), NULL);
   avl = remove_int(avl, 606);
-  avl = gpr_avl_add(avl, box(485), box(1754));
+  avl = gpr_avl_add(avl, box(485), box(1754), NULL);
   avl = remove_int(avl, 6);
-  avl = gpr_avl_add(avl, box(329), box(1756));
-  avl = gpr_avl_add(avl, box(783), box(1757));
+  avl = gpr_avl_add(avl, box(329), box(1756), NULL);
+  avl = gpr_avl_add(avl, box(783), box(1757), NULL);
   avl = remove_int(avl, 416);
-  avl = gpr_avl_add(avl, box(656), box(1759));
-  avl = gpr_avl_add(avl, box(971), box(1760));
-  avl = gpr_avl_add(avl, box(77), box(1761));
-  avl = gpr_avl_add(avl, box(942), box(1762));
+  avl = gpr_avl_add(avl, box(656), box(1759), NULL);
+  avl = gpr_avl_add(avl, box(971), box(1760), NULL);
+  avl = gpr_avl_add(avl, box(77), box(1761), NULL);
+  avl = gpr_avl_add(avl, box(942), box(1762), NULL);
   avl = remove_int(avl, 361);
-  avl = gpr_avl_add(avl, box(66), box(1764));
-  avl = gpr_avl_add(avl, box(299), box(1765));
-  avl = gpr_avl_add(avl, box(929), box(1766));
-  avl = gpr_avl_add(avl, box(797), box(1767));
+  avl = gpr_avl_add(avl, box(66), box(1764), NULL);
+  avl = gpr_avl_add(avl, box(299), box(1765), NULL);
+  avl = gpr_avl_add(avl, box(929), box(1766), NULL);
+  avl = gpr_avl_add(avl, box(797), box(1767), NULL);
   avl = remove_int(avl, 869);
   avl = remove_int(avl, 907);
-  avl = gpr_avl_add(avl, box(870), box(1770));
+  avl = gpr_avl_add(avl, box(870), box(1770), NULL);
   avl = remove_int(avl, 580);
   avl = remove_int(avl, 120);
-  avl = gpr_avl_add(avl, box(913), box(1773));
+  avl = gpr_avl_add(avl, box(913), box(1773), NULL);
   avl = remove_int(avl, 480);
-  avl = gpr_avl_add(avl, box(489), box(1775));
+  avl = gpr_avl_add(avl, box(489), box(1775), NULL);
   avl = remove_int(avl, 845);
-  avl = gpr_avl_add(avl, box(896), box(1777));
+  avl = gpr_avl_add(avl, box(896), box(1777), NULL);
   avl = remove_int(avl, 567);
   avl = remove_int(avl, 427);
-  avl = gpr_avl_add(avl, box(443), box(1780));
-  avl = gpr_avl_add(avl, box(3), box(1781));
+  avl = gpr_avl_add(avl, box(443), box(1780), NULL);
+  avl = gpr_avl_add(avl, box(3), box(1781), NULL);
   avl = remove_int(avl, 12);
-  avl = gpr_avl_add(avl, box(376), box(1783));
-  avl = gpr_avl_add(avl, box(155), box(1784));
-  avl = gpr_avl_add(avl, box(188), box(1785));
-  avl = gpr_avl_add(avl, box(149), box(1786));
-  avl = gpr_avl_add(avl, box(178), box(1787));
+  avl = gpr_avl_add(avl, box(376), box(1783), NULL);
+  avl = gpr_avl_add(avl, box(155), box(1784), NULL);
+  avl = gpr_avl_add(avl, box(188), box(1785), NULL);
+  avl = gpr_avl_add(avl, box(149), box(1786), NULL);
+  avl = gpr_avl_add(avl, box(178), box(1787), NULL);
   avl = remove_int(avl, 84);
-  avl = gpr_avl_add(avl, box(805), box(1789));
-  avl = gpr_avl_add(avl, box(612), box(1790));
+  avl = gpr_avl_add(avl, box(805), box(1789), NULL);
+  avl = gpr_avl_add(avl, box(612), box(1790), NULL);
   avl = remove_int(avl, 991);
-  avl = gpr_avl_add(avl, box(837), box(1792));
+  avl = gpr_avl_add(avl, box(837), box(1792), NULL);
   avl = remove_int(avl, 173);
   avl = remove_int(avl, 72);
-  avl = gpr_avl_add(avl, box(1014), box(1795));
+  avl = gpr_avl_add(avl, box(1014), box(1795), NULL);
   avl = remove_int(avl, 303);
-  avl = gpr_avl_add(avl, box(865), box(1797));
-  avl = gpr_avl_add(avl, box(793), box(1798));
+  avl = gpr_avl_add(avl, box(865), box(1797), NULL);
+  avl = gpr_avl_add(avl, box(793), box(1798), NULL);
   avl = remove_int(avl, 173);
   avl = remove_int(avl, 477);
-  avl = gpr_avl_add(avl, box(950), box(1801));
-  avl = gpr_avl_add(avl, box(105), box(1802));
-  avl = gpr_avl_add(avl, box(895), box(1803));
-  avl = gpr_avl_add(avl, box(171), box(1804));
-  avl = gpr_avl_add(avl, box(753), box(1805));
-  avl = gpr_avl_add(avl, box(946), box(1806));
+  avl = gpr_avl_add(avl, box(950), box(1801), NULL);
+  avl = gpr_avl_add(avl, box(105), box(1802), NULL);
+  avl = gpr_avl_add(avl, box(895), box(1803), NULL);
+  avl = gpr_avl_add(avl, box(171), box(1804), NULL);
+  avl = gpr_avl_add(avl, box(753), box(1805), NULL);
+  avl = gpr_avl_add(avl, box(946), box(1806), NULL);
   avl = remove_int(avl, 194);
   avl = remove_int(avl, 559);
   avl = remove_int(avl, 116);
-  avl = gpr_avl_add(avl, box(968), box(1810));
+  avl = gpr_avl_add(avl, box(968), box(1810), NULL);
   avl = remove_int(avl, 124);
   avl = remove_int(avl, 99);
-  avl = gpr_avl_add(avl, box(563), box(1813));
+  avl = gpr_avl_add(avl, box(563), box(1813), NULL);
   avl = remove_int(avl, 182);
-  avl = gpr_avl_add(avl, box(816), box(1815));
+  avl = gpr_avl_add(avl, box(816), box(1815), NULL);
   avl = remove_int(avl, 73);
   avl = remove_int(avl, 261);
-  avl = gpr_avl_add(avl, box(847), box(1818));
-  avl = gpr_avl_add(avl, box(368), box(1819));
-  avl = gpr_avl_add(avl, box(808), box(1820));
-  avl = gpr_avl_add(avl, box(779), box(1821));
+  avl = gpr_avl_add(avl, box(847), box(1818), NULL);
+  avl = gpr_avl_add(avl, box(368), box(1819), NULL);
+  avl = gpr_avl_add(avl, box(808), box(1820), NULL);
+  avl = gpr_avl_add(avl, box(779), box(1821), NULL);
   avl = remove_int(avl, 818);
-  avl = gpr_avl_add(avl, box(466), box(1823));
+  avl = gpr_avl_add(avl, box(466), box(1823), NULL);
   avl = remove_int(avl, 316);
-  avl = gpr_avl_add(avl, box(986), box(1825));
-  avl = gpr_avl_add(avl, box(688), box(1826));
-  avl = gpr_avl_add(avl, box(509), box(1827));
-  avl = gpr_avl_add(avl, box(51), box(1828));
+  avl = gpr_avl_add(avl, box(986), box(1825), NULL);
+  avl = gpr_avl_add(avl, box(688), box(1826), NULL);
+  avl = gpr_avl_add(avl, box(509), box(1827), NULL);
+  avl = gpr_avl_add(avl, box(51), box(1828), NULL);
   avl = remove_int(avl, 655);
   avl = remove_int(avl, 785);
   avl = remove_int(avl, 893);
-  avl = gpr_avl_add(avl, box(167), box(1832));
+  avl = gpr_avl_add(avl, box(167), box(1832), NULL);
   avl = remove_int(avl, 13);
   avl = remove_int(avl, 263);
-  avl = gpr_avl_add(avl, box(1009), box(1835));
+  avl = gpr_avl_add(avl, box(1009), box(1835), NULL);
   avl = remove_int(avl, 480);
   avl = remove_int(avl, 778);
   avl = remove_int(avl, 713);
   avl = remove_int(avl, 628);
-  avl = gpr_avl_add(avl, box(803), box(1840));
+  avl = gpr_avl_add(avl, box(803), box(1840), NULL);
   avl = remove_int(avl, 267);
-  avl = gpr_avl_add(avl, box(676), box(1842));
-  avl = gpr_avl_add(avl, box(231), box(1843));
-  avl = gpr_avl_add(avl, box(824), box(1844));
+  avl = gpr_avl_add(avl, box(676), box(1842), NULL);
+  avl = gpr_avl_add(avl, box(231), box(1843), NULL);
+  avl = gpr_avl_add(avl, box(824), box(1844), NULL);
   avl = remove_int(avl, 961);
-  avl = gpr_avl_add(avl, box(311), box(1846));
-  avl = gpr_avl_add(avl, box(420), box(1847));
-  avl = gpr_avl_add(avl, box(960), box(1848));
-  avl = gpr_avl_add(avl, box(468), box(1849));
-  avl = gpr_avl_add(avl, box(815), box(1850));
+  avl = gpr_avl_add(avl, box(311), box(1846), NULL);
+  avl = gpr_avl_add(avl, box(420), box(1847), NULL);
+  avl = gpr_avl_add(avl, box(960), box(1848), NULL);
+  avl = gpr_avl_add(avl, box(468), box(1849), NULL);
+  avl = gpr_avl_add(avl, box(815), box(1850), NULL);
   avl = remove_int(avl, 247);
   avl = remove_int(avl, 194);
-  avl = gpr_avl_add(avl, box(546), box(1853));
+  avl = gpr_avl_add(avl, box(546), box(1853), NULL);
   avl = remove_int(avl, 222);
   avl = remove_int(avl, 914);
   avl = remove_int(avl, 741);
-  avl = gpr_avl_add(avl, box(470), box(1857));
-  avl = gpr_avl_add(avl, box(933), box(1858));
-  avl = gpr_avl_add(avl, box(97), box(1859));
+  avl = gpr_avl_add(avl, box(470), box(1857), NULL);
+  avl = gpr_avl_add(avl, box(933), box(1858), NULL);
+  avl = gpr_avl_add(avl, box(97), box(1859), NULL);
   avl = remove_int(avl, 564);
   avl = remove_int(avl, 295);
-  avl = gpr_avl_add(avl, box(864), box(1862));
+  avl = gpr_avl_add(avl, box(864), box(1862), NULL);
   avl = remove_int(avl, 329);
-  avl = gpr_avl_add(avl, box(124), box(1864));
-  avl = gpr_avl_add(avl, box(1000), box(1865));
-  avl = gpr_avl_add(avl, box(228), box(1866));
-  avl = gpr_avl_add(avl, box(187), box(1867));
+  avl = gpr_avl_add(avl, box(124), box(1864), NULL);
+  avl = gpr_avl_add(avl, box(1000), box(1865), NULL);
+  avl = gpr_avl_add(avl, box(228), box(1866), NULL);
+  avl = gpr_avl_add(avl, box(187), box(1867), NULL);
   avl = remove_int(avl, 224);
   avl = remove_int(avl, 306);
   avl = remove_int(avl, 884);
-  avl = gpr_avl_add(avl, box(449), box(1871));
-  avl = gpr_avl_add(avl, box(353), box(1872));
-  avl = gpr_avl_add(avl, box(994), box(1873));
-  avl = gpr_avl_add(avl, box(596), box(1874));
-  avl = gpr_avl_add(avl, box(996), box(1875));
-  avl = gpr_avl_add(avl, box(101), box(1876));
-  avl = gpr_avl_add(avl, box(1012), box(1877));
-  avl = gpr_avl_add(avl, box(982), box(1878));
-  avl = gpr_avl_add(avl, box(742), box(1879));
+  avl = gpr_avl_add(avl, box(449), box(1871), NULL);
+  avl = gpr_avl_add(avl, box(353), box(1872), NULL);
+  avl = gpr_avl_add(avl, box(994), box(1873), NULL);
+  avl = gpr_avl_add(avl, box(596), box(1874), NULL);
+  avl = gpr_avl_add(avl, box(996), box(1875), NULL);
+  avl = gpr_avl_add(avl, box(101), box(1876), NULL);
+  avl = gpr_avl_add(avl, box(1012), box(1877), NULL);
+  avl = gpr_avl_add(avl, box(982), box(1878), NULL);
+  avl = gpr_avl_add(avl, box(742), box(1879), NULL);
   avl = remove_int(avl, 92);
   avl = remove_int(avl, 1022);
-  avl = gpr_avl_add(avl, box(941), box(1882));
+  avl = gpr_avl_add(avl, box(941), box(1882), NULL);
   avl = remove_int(avl, 742);
   avl = remove_int(avl, 919);
-  avl = gpr_avl_add(avl, box(588), box(1885));
+  avl = gpr_avl_add(avl, box(588), box(1885), NULL);
   avl = remove_int(avl, 221);
-  avl = gpr_avl_add(avl, box(356), box(1887));
-  avl = gpr_avl_add(avl, box(932), box(1888));
+  avl = gpr_avl_add(avl, box(356), box(1887), NULL);
+  avl = gpr_avl_add(avl, box(932), box(1888), NULL);
   avl = remove_int(avl, 837);
-  avl = gpr_avl_add(avl, box(394), box(1890));
-  avl = gpr_avl_add(avl, box(642), box(1891));
-  avl = gpr_avl_add(avl, box(52), box(1892));
-  avl = gpr_avl_add(avl, box(437), box(1893));
-  avl = gpr_avl_add(avl, box(948), box(1894));
-  avl = gpr_avl_add(avl, box(93), box(1895));
+  avl = gpr_avl_add(avl, box(394), box(1890), NULL);
+  avl = gpr_avl_add(avl, box(642), box(1891), NULL);
+  avl = gpr_avl_add(avl, box(52), box(1892), NULL);
+  avl = gpr_avl_add(avl, box(437), box(1893), NULL);
+  avl = gpr_avl_add(avl, box(948), box(1894), NULL);
+  avl = gpr_avl_add(avl, box(93), box(1895), NULL);
   avl = remove_int(avl, 873);
   avl = remove_int(avl, 336);
   avl = remove_int(avl, 277);
   avl = remove_int(avl, 932);
-  avl = gpr_avl_add(avl, box(80), box(1900));
-  avl = gpr_avl_add(avl, box(952), box(1901));
-  avl = gpr_avl_add(avl, box(510), box(1902));
+  avl = gpr_avl_add(avl, box(80), box(1900), NULL);
+  avl = gpr_avl_add(avl, box(952), box(1901), NULL);
+  avl = gpr_avl_add(avl, box(510), box(1902), NULL);
   avl = remove_int(avl, 876);
   avl = remove_int(avl, 612);
-  avl = gpr_avl_add(avl, box(923), box(1905));
-  avl = gpr_avl_add(avl, box(475), box(1906));
+  avl = gpr_avl_add(avl, box(923), box(1905), NULL);
+  avl = gpr_avl_add(avl, box(475), box(1906), NULL);
   avl = remove_int(avl, 478);
   avl = remove_int(avl, 148);
-  avl = gpr_avl_add(avl, box(538), box(1909));
+  avl = gpr_avl_add(avl, box(538), box(1909), NULL);
   avl = remove_int(avl, 47);
-  avl = gpr_avl_add(avl, box(89), box(1911));
+  avl = gpr_avl_add(avl, box(89), box(1911), NULL);
   avl = remove_int(avl, 723);
-  avl = gpr_avl_add(avl, box(687), box(1913));
-  avl = gpr_avl_add(avl, box(480), box(1914));
-  avl = gpr_avl_add(avl, box(149), box(1915));
+  avl = gpr_avl_add(avl, box(687), box(1913), NULL);
+  avl = gpr_avl_add(avl, box(480), box(1914), NULL);
+  avl = gpr_avl_add(avl, box(149), box(1915), NULL);
   avl = remove_int(avl, 68);
   avl = remove_int(avl, 862);
   avl = remove_int(avl, 363);
-  avl = gpr_avl_add(avl, box(996), box(1919));
+  avl = gpr_avl_add(avl, box(996), box(1919), NULL);
   avl = remove_int(avl, 380);
-  avl = gpr_avl_add(avl, box(957), box(1921));
+  avl = gpr_avl_add(avl, box(957), box(1921), NULL);
   avl = remove_int(avl, 413);
-  avl = gpr_avl_add(avl, box(360), box(1923));
-  avl = gpr_avl_add(avl, box(304), box(1924));
-  avl = gpr_avl_add(avl, box(634), box(1925));
-  avl = gpr_avl_add(avl, box(506), box(1926));
+  avl = gpr_avl_add(avl, box(360), box(1923), NULL);
+  avl = gpr_avl_add(avl, box(304), box(1924), NULL);
+  avl = gpr_avl_add(avl, box(634), box(1925), NULL);
+  avl = gpr_avl_add(avl, box(506), box(1926), NULL);
   avl = remove_int(avl, 248);
-  avl = gpr_avl_add(avl, box(124), box(1928));
-  avl = gpr_avl_add(avl, box(181), box(1929));
+  avl = gpr_avl_add(avl, box(124), box(1928), NULL);
+  avl = gpr_avl_add(avl, box(181), box(1929), NULL);
   avl = remove_int(avl, 507);
-  avl = gpr_avl_add(avl, box(141), box(1931));
+  avl = gpr_avl_add(avl, box(141), box(1931), NULL);
   avl = remove_int(avl, 409);
   avl = remove_int(avl, 129);
   avl = remove_int(avl, 694);
   avl = remove_int(avl, 723);
-  avl = gpr_avl_add(avl, box(998), box(1936));
-  avl = gpr_avl_add(avl, box(906), box(1937));
-  avl = gpr_avl_add(avl, box(44), box(1938));
+  avl = gpr_avl_add(avl, box(998), box(1936), NULL);
+  avl = gpr_avl_add(avl, box(906), box(1937), NULL);
+  avl = gpr_avl_add(avl, box(44), box(1938), NULL);
   avl = remove_int(avl, 949);
   avl = remove_int(avl, 117);
-  avl = gpr_avl_add(avl, box(700), box(1941));
-  avl = gpr_avl_add(avl, box(258), box(1942));
+  avl = gpr_avl_add(avl, box(700), box(1941), NULL);
+  avl = gpr_avl_add(avl, box(258), box(1942), NULL);
   avl = remove_int(avl, 828);
-  avl = gpr_avl_add(avl, box(860), box(1944));
-  avl = gpr_avl_add(avl, box(987), box(1945));
-  avl = gpr_avl_add(avl, box(316), box(1946));
-  avl = gpr_avl_add(avl, box(919), box(1947));
+  avl = gpr_avl_add(avl, box(860), box(1944), NULL);
+  avl = gpr_avl_add(avl, box(987), box(1945), NULL);
+  avl = gpr_avl_add(avl, box(316), box(1946), NULL);
+  avl = gpr_avl_add(avl, box(919), box(1947), NULL);
   avl = remove_int(avl, 84);
-  avl = gpr_avl_add(avl, box(473), box(1949));
+  avl = gpr_avl_add(avl, box(473), box(1949), NULL);
   avl = remove_int(avl, 127);
   avl = remove_int(avl, 829);
   avl = remove_int(avl, 829);
-  avl = gpr_avl_add(avl, box(488), box(1953));
-  avl = gpr_avl_add(avl, box(954), box(1954));
+  avl = gpr_avl_add(avl, box(488), box(1953), NULL);
+  avl = gpr_avl_add(avl, box(954), box(1954), NULL);
   avl = remove_int(avl, 198);
   avl = remove_int(avl, 972);
   avl = remove_int(avl, 670);
-  avl = gpr_avl_add(avl, box(822), box(1958));
+  avl = gpr_avl_add(avl, box(822), box(1958), NULL);
   avl = remove_int(avl, 589);
   avl = remove_int(avl, 459);
-  avl = gpr_avl_add(avl, box(1003), box(1961));
-  avl = gpr_avl_add(avl, box(657), box(1962));
-  avl = gpr_avl_add(avl, box(477), box(1963));
-  avl = gpr_avl_add(avl, box(923), box(1964));
+  avl = gpr_avl_add(avl, box(1003), box(1961), NULL);
+  avl = gpr_avl_add(avl, box(657), box(1962), NULL);
+  avl = gpr_avl_add(avl, box(477), box(1963), NULL);
+  avl = gpr_avl_add(avl, box(923), box(1964), NULL);
   avl = remove_int(avl, 496);
   avl = remove_int(avl, 99);
-  avl = gpr_avl_add(avl, box(127), box(1967));
-  avl = gpr_avl_add(avl, box(1013), box(1968));
-  avl = gpr_avl_add(avl, box(778), box(1969));
+  avl = gpr_avl_add(avl, box(127), box(1967), NULL);
+  avl = gpr_avl_add(avl, box(1013), box(1968), NULL);
+  avl = gpr_avl_add(avl, box(778), box(1969), NULL);
   avl = remove_int(avl, 5);
   avl = remove_int(avl, 990);
   avl = remove_int(avl, 850);
   avl = remove_int(avl, 160);
   avl = remove_int(avl, 86);
-  avl = gpr_avl_add(avl, box(283), box(1975));
+  avl = gpr_avl_add(avl, box(283), box(1975), NULL);
   avl = remove_int(avl, 278);
   avl = remove_int(avl, 297);
   avl = remove_int(avl, 137);
   avl = remove_int(avl, 653);
-  avl = gpr_avl_add(avl, box(702), box(1980));
+  avl = gpr_avl_add(avl, box(702), box(1980), NULL);
   avl = remove_int(avl, 63);
   avl = remove_int(avl, 427);
   avl = remove_int(avl, 706);
   avl = remove_int(avl, 806);
-  avl = gpr_avl_add(avl, box(335), box(1985));
-  avl = gpr_avl_add(avl, box(412), box(1986));
+  avl = gpr_avl_add(avl, box(335), box(1985), NULL);
+  avl = gpr_avl_add(avl, box(412), box(1986), NULL);
   avl = remove_int(avl, 766);
   avl = remove_int(avl, 937);
   avl = remove_int(avl, 886);
   avl = remove_int(avl, 652);
-  avl = gpr_avl_add(avl, box(545), box(1991));
-  avl = gpr_avl_add(avl, box(408), box(1992));
-  avl = gpr_avl_add(avl, box(841), box(1993));
+  avl = gpr_avl_add(avl, box(545), box(1991), NULL);
+  avl = gpr_avl_add(avl, box(408), box(1992), NULL);
+  avl = gpr_avl_add(avl, box(841), box(1993), NULL);
   avl = remove_int(avl, 593);
-  avl = gpr_avl_add(avl, box(582), box(1995));
-  avl = gpr_avl_add(avl, box(597), box(1996));
+  avl = gpr_avl_add(avl, box(582), box(1995), NULL);
+  avl = gpr_avl_add(avl, box(597), box(1996), NULL);
   avl = remove_int(avl, 49);
   avl = remove_int(avl, 835);
-  avl = gpr_avl_add(avl, box(417), box(1999));
-  avl = gpr_avl_add(avl, box(191), box(2000));
+  avl = gpr_avl_add(avl, box(417), box(1999), NULL);
+  avl = gpr_avl_add(avl, box(191), box(2000), NULL);
   avl = remove_int(avl, 406);
-  avl = gpr_avl_add(avl, box(30), box(2002));
+  avl = gpr_avl_add(avl, box(30), box(2002), NULL);
   avl = remove_int(avl, 841);
   avl = remove_int(avl, 50);
-  avl = gpr_avl_add(avl, box(967), box(2005));
-  avl = gpr_avl_add(avl, box(849), box(2006));
+  avl = gpr_avl_add(avl, box(967), box(2005), NULL);
+  avl = gpr_avl_add(avl, box(849), box(2006), NULL);
   avl = remove_int(avl, 608);
-  avl = gpr_avl_add(avl, box(306), box(2008));
+  avl = gpr_avl_add(avl, box(306), box(2008), NULL);
   avl = remove_int(avl, 779);
-  avl = gpr_avl_add(avl, box(897), box(2010));
-  avl = gpr_avl_add(avl, box(147), box(2011));
+  avl = gpr_avl_add(avl, box(897), box(2010), NULL);
+  avl = gpr_avl_add(avl, box(147), box(2011), NULL);
   avl = remove_int(avl, 982);
-  avl = gpr_avl_add(avl, box(470), box(2013));
+  avl = gpr_avl_add(avl, box(470), box(2013), NULL);
   avl = remove_int(avl, 951);
-  avl = gpr_avl_add(avl, box(388), box(2015));
+  avl = gpr_avl_add(avl, box(388), box(2015), NULL);
   avl = remove_int(avl, 616);
   avl = remove_int(avl, 721);
   avl = remove_int(avl, 942);
   avl = remove_int(avl, 589);
-  avl = gpr_avl_add(avl, box(218), box(2020));
+  avl = gpr_avl_add(avl, box(218), box(2020), NULL);
   avl = remove_int(avl, 671);
-  avl = gpr_avl_add(avl, box(1020), box(2022));
+  avl = gpr_avl_add(avl, box(1020), box(2022), NULL);
   avl = remove_int(avl, 277);
-  avl = gpr_avl_add(avl, box(681), box(2024));
-  avl = gpr_avl_add(avl, box(179), box(2025));
-  avl = gpr_avl_add(avl, box(370), box(2026));
-  avl = gpr_avl_add(avl, box(0), box(2027));
+  avl = gpr_avl_add(avl, box(681), box(2024), NULL);
+  avl = gpr_avl_add(avl, box(179), box(2025), NULL);
+  avl = gpr_avl_add(avl, box(370), box(2026), NULL);
+  avl = gpr_avl_add(avl, box(0), box(2027), NULL);
   avl = remove_int(avl, 523);
-  avl = gpr_avl_add(avl, box(99), box(2029));
-  avl = gpr_avl_add(avl, box(334), box(2030));
-  avl = gpr_avl_add(avl, box(569), box(2031));
-  avl = gpr_avl_add(avl, box(257), box(2032));
+  avl = gpr_avl_add(avl, box(99), box(2029), NULL);
+  avl = gpr_avl_add(avl, box(334), box(2030), NULL);
+  avl = gpr_avl_add(avl, box(569), box(2031), NULL);
+  avl = gpr_avl_add(avl, box(257), box(2032), NULL);
   avl = remove_int(avl, 572);
-  avl = gpr_avl_add(avl, box(805), box(2034));
-  avl = gpr_avl_add(avl, box(143), box(2035));
-  avl = gpr_avl_add(avl, box(670), box(2036));
+  avl = gpr_avl_add(avl, box(805), box(2034), NULL);
+  avl = gpr_avl_add(avl, box(143), box(2035), NULL);
+  avl = gpr_avl_add(avl, box(670), box(2036), NULL);
   avl = remove_int(avl, 42);
-  avl = gpr_avl_add(avl, box(46), box(2038));
+  avl = gpr_avl_add(avl, box(46), box(2038), NULL);
   avl = remove_int(avl, 970);
-  avl = gpr_avl_add(avl, box(353), box(2040));
+  avl = gpr_avl_add(avl, box(353), box(2040), NULL);
   avl = remove_int(avl, 258);
-  avl = gpr_avl_add(avl, box(451), box(2042));
-  avl = gpr_avl_add(avl, box(28), box(2043));
-  avl = gpr_avl_add(avl, box(729), box(2044));
-  avl = gpr_avl_add(avl, box(401), box(2045));
-  avl = gpr_avl_add(avl, box(614), box(2046));
+  avl = gpr_avl_add(avl, box(451), box(2042), NULL);
+  avl = gpr_avl_add(avl, box(28), box(2043), NULL);
+  avl = gpr_avl_add(avl, box(729), box(2044), NULL);
+  avl = gpr_avl_add(avl, box(401), box(2045), NULL);
+  avl = gpr_avl_add(avl, box(614), box(2046), NULL);
   avl = remove_int(avl, 990);
   avl = remove_int(avl, 212);
   avl = remove_int(avl, 22);
   avl = remove_int(avl, 677);
-  avl = gpr_avl_add(avl, box(1016), box(2051));
-  avl = gpr_avl_add(avl, box(980), box(2052));
-  avl = gpr_avl_add(avl, box(990), box(2053));
-  avl = gpr_avl_add(avl, box(355), box(2054));
+  avl = gpr_avl_add(avl, box(1016), box(2051), NULL);
+  avl = gpr_avl_add(avl, box(980), box(2052), NULL);
+  avl = gpr_avl_add(avl, box(990), box(2053), NULL);
+  avl = gpr_avl_add(avl, box(355), box(2054), NULL);
   avl = remove_int(avl, 730);
   avl = remove_int(avl, 37);
-  avl = gpr_avl_add(avl, box(407), box(2057));
-  avl = gpr_avl_add(avl, box(222), box(2058));
-  avl = gpr_avl_add(avl, box(439), box(2059));
-  avl = gpr_avl_add(avl, box(563), box(2060));
+  avl = gpr_avl_add(avl, box(407), box(2057), NULL);
+  avl = gpr_avl_add(avl, box(222), box(2058), NULL);
+  avl = gpr_avl_add(avl, box(439), box(2059), NULL);
+  avl = gpr_avl_add(avl, box(563), box(2060), NULL);
   avl = remove_int(avl, 992);
   avl = remove_int(avl, 786);
-  avl = gpr_avl_add(avl, box(1), box(2063));
-  avl = gpr_avl_add(avl, box(473), box(2064));
-  avl = gpr_avl_add(avl, box(992), box(2065));
+  avl = gpr_avl_add(avl, box(1), box(2063), NULL);
+  avl = gpr_avl_add(avl, box(473), box(2064), NULL);
+  avl = gpr_avl_add(avl, box(992), box(2065), NULL);
   avl = remove_int(avl, 190);
   avl = remove_int(avl, 450);
   avl = remove_int(avl, 1020);
   avl = remove_int(avl, 149);
-  avl = gpr_avl_add(avl, box(329), box(2070));
-  avl = gpr_avl_add(avl, box(35), box(2071));
+  avl = gpr_avl_add(avl, box(329), box(2070), NULL);
+  avl = gpr_avl_add(avl, box(35), box(2071), NULL);
   avl = remove_int(avl, 843);
-  avl = gpr_avl_add(avl, box(855), box(2073));
+  avl = gpr_avl_add(avl, box(855), box(2073), NULL);
   avl = remove_int(avl, 878);
-  avl = gpr_avl_add(avl, box(993), box(2075));
-  avl = gpr_avl_add(avl, box(87), box(2076));
-  avl = gpr_avl_add(avl, box(572), box(2077));
+  avl = gpr_avl_add(avl, box(993), box(2075), NULL);
+  avl = gpr_avl_add(avl, box(87), box(2076), NULL);
+  avl = gpr_avl_add(avl, box(572), box(2077), NULL);
   avl = remove_int(avl, 896);
-  avl = gpr_avl_add(avl, box(849), box(2079));
+  avl = gpr_avl_add(avl, box(849), box(2079), NULL);
   avl = remove_int(avl, 597);
-  avl = gpr_avl_add(avl, box(472), box(2081));
+  avl = gpr_avl_add(avl, box(472), box(2081), NULL);
   avl = remove_int(avl, 778);
   avl = remove_int(avl, 934);
   avl = remove_int(avl, 314);
-  avl = gpr_avl_add(avl, box(101), box(2085));
+  avl = gpr_avl_add(avl, box(101), box(2085), NULL);
   avl = remove_int(avl, 938);
   avl = remove_int(avl, 1010);
-  avl = gpr_avl_add(avl, box(579), box(2088));
+  avl = gpr_avl_add(avl, box(579), box(2088), NULL);
   avl = remove_int(avl, 798);
   avl = remove_int(avl, 88);
-  avl = gpr_avl_add(avl, box(851), box(2091));
+  avl = gpr_avl_add(avl, box(851), box(2091), NULL);
   avl = remove_int(avl, 705);
-  avl = gpr_avl_add(avl, box(26), box(2093));
+  avl = gpr_avl_add(avl, box(26), box(2093), NULL);
   avl = remove_int(avl, 973);
-  avl = gpr_avl_add(avl, box(923), box(2095));
+  avl = gpr_avl_add(avl, box(923), box(2095), NULL);
   avl = remove_int(avl, 668);
-  avl = gpr_avl_add(avl, box(310), box(2097));
-  avl = gpr_avl_add(avl, box(269), box(2098));
+  avl = gpr_avl_add(avl, box(310), box(2097), NULL);
+  avl = gpr_avl_add(avl, box(269), box(2098), NULL);
   avl = remove_int(avl, 173);
-  avl = gpr_avl_add(avl, box(279), box(2100));
+  avl = gpr_avl_add(avl, box(279), box(2100), NULL);
   avl = remove_int(avl, 203);
-  avl = gpr_avl_add(avl, box(411), box(2102));
+  avl = gpr_avl_add(avl, box(411), box(2102), NULL);
   avl = remove_int(avl, 950);
-  avl = gpr_avl_add(avl, box(6), box(2104));
+  avl = gpr_avl_add(avl, box(6), box(2104), NULL);
   avl = remove_int(avl, 400);
   avl = remove_int(avl, 468);
   avl = remove_int(avl, 271);
-  avl = gpr_avl_add(avl, box(627), box(2108));
+  avl = gpr_avl_add(avl, box(627), box(2108), NULL);
   avl = remove_int(avl, 727);
   avl = remove_int(avl, 148);
   avl = remove_int(avl, 98);
@@ -3253,259 +3255,259 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 628);
   avl = remove_int(avl, 826);
   avl = remove_int(avl, 664);
-  avl = gpr_avl_add(avl, box(76), box(2117));
+  avl = gpr_avl_add(avl, box(76), box(2117), NULL);
   avl = remove_int(avl, 194);
   avl = remove_int(avl, 18);
-  avl = gpr_avl_add(avl, box(727), box(2120));
+  avl = gpr_avl_add(avl, box(727), box(2120), NULL);
   avl = remove_int(avl, 295);
-  avl = gpr_avl_add(avl, box(645), box(2122));
+  avl = gpr_avl_add(avl, box(645), box(2122), NULL);
   avl = remove_int(avl, 321);
   avl = remove_int(avl, 863);
-  avl = gpr_avl_add(avl, box(824), box(2125));
-  avl = gpr_avl_add(avl, box(651), box(2126));
-  avl = gpr_avl_add(avl, box(804), box(2127));
+  avl = gpr_avl_add(avl, box(824), box(2125), NULL);
+  avl = gpr_avl_add(avl, box(651), box(2126), NULL);
+  avl = gpr_avl_add(avl, box(804), box(2127), NULL);
   avl = remove_int(avl, 307);
-  avl = gpr_avl_add(avl, box(867), box(2129));
+  avl = gpr_avl_add(avl, box(867), box(2129), NULL);
   avl = remove_int(avl, 384);
-  avl = gpr_avl_add(avl, box(819), box(2131));
+  avl = gpr_avl_add(avl, box(819), box(2131), NULL);
   avl = remove_int(avl, 674);
-  avl = gpr_avl_add(avl, box(76), box(2133));
+  avl = gpr_avl_add(avl, box(76), box(2133), NULL);
   avl = remove_int(avl, 898);
-  avl = gpr_avl_add(avl, box(45), box(2135));
-  avl = gpr_avl_add(avl, box(512), box(2136));
+  avl = gpr_avl_add(avl, box(45), box(2135), NULL);
+  avl = gpr_avl_add(avl, box(512), box(2136), NULL);
   avl = remove_int(avl, 773);
   avl = remove_int(avl, 907);
   avl = remove_int(avl, 382);
   avl = remove_int(avl, 95);
   avl = remove_int(avl, 734);
   avl = remove_int(avl, 81);
-  avl = gpr_avl_add(avl, box(348), box(2143));
+  avl = gpr_avl_add(avl, box(348), box(2143), NULL);
   avl = remove_int(avl, 509);
   avl = remove_int(avl, 301);
-  avl = gpr_avl_add(avl, box(861), box(2146));
-  avl = gpr_avl_add(avl, box(918), box(2147));
+  avl = gpr_avl_add(avl, box(861), box(2146), NULL);
+  avl = gpr_avl_add(avl, box(918), box(2147), NULL);
   avl = remove_int(avl, 992);
-  avl = gpr_avl_add(avl, box(356), box(2149));
+  avl = gpr_avl_add(avl, box(356), box(2149), NULL);
   avl = remove_int(avl, 64);
   avl = remove_int(avl, 444);
   avl = remove_int(avl, 741);
-  avl = gpr_avl_add(avl, box(710), box(2153));
-  avl = gpr_avl_add(avl, box(264), box(2154));
+  avl = gpr_avl_add(avl, box(710), box(2153), NULL);
+  avl = gpr_avl_add(avl, box(264), box(2154), NULL);
   avl = remove_int(avl, 347);
   avl = remove_int(avl, 250);
-  avl = gpr_avl_add(avl, box(82), box(2157));
-  avl = gpr_avl_add(avl, box(571), box(2158));
+  avl = gpr_avl_add(avl, box(82), box(2157), NULL);
+  avl = gpr_avl_add(avl, box(571), box(2158), NULL);
   avl = remove_int(avl, 721);
   avl = remove_int(avl, 622);
-  avl = gpr_avl_add(avl, box(950), box(2161));
-  avl = gpr_avl_add(avl, box(94), box(2162));
+  avl = gpr_avl_add(avl, box(950), box(2161), NULL);
+  avl = gpr_avl_add(avl, box(94), box(2162), NULL);
   avl = remove_int(avl, 970);
-  avl = gpr_avl_add(avl, box(815), box(2164));
+  avl = gpr_avl_add(avl, box(815), box(2164), NULL);
   avl = remove_int(avl, 930);
   avl = remove_int(avl, 703);
-  avl = gpr_avl_add(avl, box(432), box(2167));
+  avl = gpr_avl_add(avl, box(432), box(2167), NULL);
   avl = remove_int(avl, 544);
-  avl = gpr_avl_add(avl, box(21), box(2169));
-  avl = gpr_avl_add(avl, box(186), box(2170));
+  avl = gpr_avl_add(avl, box(21), box(2169), NULL);
+  avl = gpr_avl_add(avl, box(186), box(2170), NULL);
   avl = remove_int(avl, 143);
-  avl = gpr_avl_add(avl, box(425), box(2172));
+  avl = gpr_avl_add(avl, box(425), box(2172), NULL);
   avl = remove_int(avl, 769);
-  avl = gpr_avl_add(avl, box(656), box(2174));
+  avl = gpr_avl_add(avl, box(656), box(2174), NULL);
   avl = remove_int(avl, 29);
-  avl = gpr_avl_add(avl, box(464), box(2176));
+  avl = gpr_avl_add(avl, box(464), box(2176), NULL);
   avl = remove_int(avl, 713);
-  avl = gpr_avl_add(avl, box(800), box(2178));
+  avl = gpr_avl_add(avl, box(800), box(2178), NULL);
   avl = remove_int(avl, 621);
-  avl = gpr_avl_add(avl, box(962), box(2180));
+  avl = gpr_avl_add(avl, box(962), box(2180), NULL);
   avl = remove_int(avl, 448);
-  avl = gpr_avl_add(avl, box(878), box(2182));
+  avl = gpr_avl_add(avl, box(878), box(2182), NULL);
   avl = remove_int(avl, 39);
   avl = remove_int(avl, 999);
-  avl = gpr_avl_add(avl, box(182), box(2185));
-  avl = gpr_avl_add(avl, box(429), box(2186));
-  avl = gpr_avl_add(avl, box(598), box(2187));
+  avl = gpr_avl_add(avl, box(182), box(2185), NULL);
+  avl = gpr_avl_add(avl, box(429), box(2186), NULL);
+  avl = gpr_avl_add(avl, box(598), box(2187), NULL);
   avl = remove_int(avl, 551);
-  avl = gpr_avl_add(avl, box(827), box(2189));
-  avl = gpr_avl_add(avl, box(809), box(2190));
+  avl = gpr_avl_add(avl, box(827), box(2189), NULL);
+  avl = gpr_avl_add(avl, box(809), box(2190), NULL);
   avl = remove_int(avl, 438);
   avl = remove_int(avl, 811);
-  avl = gpr_avl_add(avl, box(808), box(2193));
-  avl = gpr_avl_add(avl, box(788), box(2194));
+  avl = gpr_avl_add(avl, box(808), box(2193), NULL);
+  avl = gpr_avl_add(avl, box(788), box(2194), NULL);
   avl = remove_int(avl, 156);
-  avl = gpr_avl_add(avl, box(933), box(2196));
-  avl = gpr_avl_add(avl, box(344), box(2197));
+  avl = gpr_avl_add(avl, box(933), box(2196), NULL);
+  avl = gpr_avl_add(avl, box(344), box(2197), NULL);
   avl = remove_int(avl, 460);
-  avl = gpr_avl_add(avl, box(161), box(2199));
-  avl = gpr_avl_add(avl, box(444), box(2200));
+  avl = gpr_avl_add(avl, box(161), box(2199), NULL);
+  avl = gpr_avl_add(avl, box(444), box(2200), NULL);
   avl = remove_int(avl, 597);
   avl = remove_int(avl, 668);
-  avl = gpr_avl_add(avl, box(703), box(2203));
+  avl = gpr_avl_add(avl, box(703), box(2203), NULL);
   avl = remove_int(avl, 515);
-  avl = gpr_avl_add(avl, box(380), box(2205));
-  avl = gpr_avl_add(avl, box(338), box(2206));
+  avl = gpr_avl_add(avl, box(380), box(2205), NULL);
+  avl = gpr_avl_add(avl, box(338), box(2206), NULL);
   avl = remove_int(avl, 550);
   avl = remove_int(avl, 946);
   avl = remove_int(avl, 714);
   avl = remove_int(avl, 739);
-  avl = gpr_avl_add(avl, box(413), box(2211));
+  avl = gpr_avl_add(avl, box(413), box(2211), NULL);
   avl = remove_int(avl, 450);
-  avl = gpr_avl_add(avl, box(411), box(2213));
-  avl = gpr_avl_add(avl, box(117), box(2214));
-  avl = gpr_avl_add(avl, box(322), box(2215));
-  avl = gpr_avl_add(avl, box(915), box(2216));
-  avl = gpr_avl_add(avl, box(410), box(2217));
-  avl = gpr_avl_add(avl, box(66), box(2218));
+  avl = gpr_avl_add(avl, box(411), box(2213), NULL);
+  avl = gpr_avl_add(avl, box(117), box(2214), NULL);
+  avl = gpr_avl_add(avl, box(322), box(2215), NULL);
+  avl = gpr_avl_add(avl, box(915), box(2216), NULL);
+  avl = gpr_avl_add(avl, box(410), box(2217), NULL);
+  avl = gpr_avl_add(avl, box(66), box(2218), NULL);
   avl = remove_int(avl, 756);
   avl = remove_int(avl, 596);
-  avl = gpr_avl_add(avl, box(882), box(2221));
-  avl = gpr_avl_add(avl, box(930), box(2222));
-  avl = gpr_avl_add(avl, box(36), box(2223));
+  avl = gpr_avl_add(avl, box(882), box(2221), NULL);
+  avl = gpr_avl_add(avl, box(930), box(2222), NULL);
+  avl = gpr_avl_add(avl, box(36), box(2223), NULL);
   avl = remove_int(avl, 742);
-  avl = gpr_avl_add(avl, box(539), box(2225));
-  avl = gpr_avl_add(avl, box(596), box(2226));
+  avl = gpr_avl_add(avl, box(539), box(2225), NULL);
+  avl = gpr_avl_add(avl, box(596), box(2226), NULL);
   avl = remove_int(avl, 82);
   avl = remove_int(avl, 686);
   avl = remove_int(avl, 933);
   avl = remove_int(avl, 42);
   avl = remove_int(avl, 340);
-  avl = gpr_avl_add(avl, box(126), box(2232));
-  avl = gpr_avl_add(avl, box(493), box(2233));
-  avl = gpr_avl_add(avl, box(839), box(2234));
+  avl = gpr_avl_add(avl, box(126), box(2232), NULL);
+  avl = gpr_avl_add(avl, box(493), box(2233), NULL);
+  avl = gpr_avl_add(avl, box(839), box(2234), NULL);
   avl = remove_int(avl, 774);
-  avl = gpr_avl_add(avl, box(337), box(2236));
+  avl = gpr_avl_add(avl, box(337), box(2236), NULL);
   avl = remove_int(avl, 322);
-  avl = gpr_avl_add(avl, box(16), box(2238));
+  avl = gpr_avl_add(avl, box(16), box(2238), NULL);
   avl = remove_int(avl, 73);
   avl = remove_int(avl, 85);
   avl = remove_int(avl, 191);
   avl = remove_int(avl, 541);
-  avl = gpr_avl_add(avl, box(704), box(2243));
+  avl = gpr_avl_add(avl, box(704), box(2243), NULL);
   avl = remove_int(avl, 767);
   avl = remove_int(avl, 1006);
   avl = remove_int(avl, 844);
   avl = remove_int(avl, 742);
-  avl = gpr_avl_add(avl, box(48), box(2248));
-  avl = gpr_avl_add(avl, box(138), box(2249));
-  avl = gpr_avl_add(avl, box(437), box(2250));
-  avl = gpr_avl_add(avl, box(275), box(2251));
+  avl = gpr_avl_add(avl, box(48), box(2248), NULL);
+  avl = gpr_avl_add(avl, box(138), box(2249), NULL);
+  avl = gpr_avl_add(avl, box(437), box(2250), NULL);
+  avl = gpr_avl_add(avl, box(275), box(2251), NULL);
   avl = remove_int(avl, 520);
-  avl = gpr_avl_add(avl, box(1019), box(2253));
+  avl = gpr_avl_add(avl, box(1019), box(2253), NULL);
   avl = remove_int(avl, 955);
-  avl = gpr_avl_add(avl, box(270), box(2255));
+  avl = gpr_avl_add(avl, box(270), box(2255), NULL);
   avl = remove_int(avl, 680);
   avl = remove_int(avl, 698);
-  avl = gpr_avl_add(avl, box(735), box(2258));
-  avl = gpr_avl_add(avl, box(400), box(2259));
+  avl = gpr_avl_add(avl, box(735), box(2258), NULL);
+  avl = gpr_avl_add(avl, box(400), box(2259), NULL);
   avl = remove_int(avl, 991);
-  avl = gpr_avl_add(avl, box(263), box(2261));
+  avl = gpr_avl_add(avl, box(263), box(2261), NULL);
   avl = remove_int(avl, 704);
-  avl = gpr_avl_add(avl, box(757), box(2263));
+  avl = gpr_avl_add(avl, box(757), box(2263), NULL);
   avl = remove_int(avl, 194);
   avl = remove_int(avl, 616);
   avl = remove_int(avl, 784);
-  avl = gpr_avl_add(avl, box(382), box(2267));
-  avl = gpr_avl_add(avl, box(464), box(2268));
-  avl = gpr_avl_add(avl, box(817), box(2269));
+  avl = gpr_avl_add(avl, box(382), box(2267), NULL);
+  avl = gpr_avl_add(avl, box(464), box(2268), NULL);
+  avl = gpr_avl_add(avl, box(817), box(2269), NULL);
   avl = remove_int(avl, 445);
-  avl = gpr_avl_add(avl, box(412), box(2271));
+  avl = gpr_avl_add(avl, box(412), box(2271), NULL);
   avl = remove_int(avl, 525);
-  avl = gpr_avl_add(avl, box(299), box(2273));
-  avl = gpr_avl_add(avl, box(464), box(2274));
-  avl = gpr_avl_add(avl, box(715), box(2275));
+  avl = gpr_avl_add(avl, box(299), box(2273), NULL);
+  avl = gpr_avl_add(avl, box(464), box(2274), NULL);
+  avl = gpr_avl_add(avl, box(715), box(2275), NULL);
   avl = remove_int(avl, 58);
   avl = remove_int(avl, 218);
-  avl = gpr_avl_add(avl, box(961), box(2278));
-  avl = gpr_avl_add(avl, box(491), box(2279));
+  avl = gpr_avl_add(avl, box(961), box(2278), NULL);
+  avl = gpr_avl_add(avl, box(491), box(2279), NULL);
   avl = remove_int(avl, 846);
-  avl = gpr_avl_add(avl, box(762), box(2281));
+  avl = gpr_avl_add(avl, box(762), box(2281), NULL);
   avl = remove_int(avl, 974);
   avl = remove_int(avl, 887);
-  avl = gpr_avl_add(avl, box(498), box(2284));
+  avl = gpr_avl_add(avl, box(498), box(2284), NULL);
   avl = remove_int(avl, 810);
   avl = remove_int(avl, 743);
   avl = remove_int(avl, 22);
   avl = remove_int(avl, 284);
-  avl = gpr_avl_add(avl, box(482), box(2289));
-  avl = gpr_avl_add(avl, box(1021), box(2290));
+  avl = gpr_avl_add(avl, box(482), box(2289), NULL);
+  avl = gpr_avl_add(avl, box(1021), box(2290), NULL);
   avl = remove_int(avl, 155);
   avl = remove_int(avl, 128);
-  avl = gpr_avl_add(avl, box(819), box(2293));
-  avl = gpr_avl_add(avl, box(324), box(2294));
+  avl = gpr_avl_add(avl, box(819), box(2293), NULL);
+  avl = gpr_avl_add(avl, box(324), box(2294), NULL);
   avl = remove_int(avl, 196);
   avl = remove_int(avl, 370);
   avl = remove_int(avl, 753);
   avl = remove_int(avl, 56);
   avl = remove_int(avl, 735);
-  avl = gpr_avl_add(avl, box(272), box(2300));
-  avl = gpr_avl_add(avl, box(474), box(2301));
-  avl = gpr_avl_add(avl, box(719), box(2302));
-  avl = gpr_avl_add(avl, box(236), box(2303));
+  avl = gpr_avl_add(avl, box(272), box(2300), NULL);
+  avl = gpr_avl_add(avl, box(474), box(2301), NULL);
+  avl = gpr_avl_add(avl, box(719), box(2302), NULL);
+  avl = gpr_avl_add(avl, box(236), box(2303), NULL);
   avl = remove_int(avl, 818);
-  avl = gpr_avl_add(avl, box(727), box(2305));
+  avl = gpr_avl_add(avl, box(727), box(2305), NULL);
   avl = remove_int(avl, 892);
   avl = remove_int(avl, 871);
   avl = remove_int(avl, 231);
-  avl = gpr_avl_add(avl, box(62), box(2309));
-  avl = gpr_avl_add(avl, box(953), box(2310));
+  avl = gpr_avl_add(avl, box(62), box(2309), NULL);
+  avl = gpr_avl_add(avl, box(953), box(2310), NULL);
   avl = remove_int(avl, 701);
-  avl = gpr_avl_add(avl, box(193), box(2312));
+  avl = gpr_avl_add(avl, box(193), box(2312), NULL);
   avl = remove_int(avl, 619);
   avl = remove_int(avl, 22);
   avl = remove_int(avl, 804);
   avl = remove_int(avl, 851);
-  avl = gpr_avl_add(avl, box(286), box(2317));
-  avl = gpr_avl_add(avl, box(751), box(2318));
+  avl = gpr_avl_add(avl, box(286), box(2317), NULL);
+  avl = gpr_avl_add(avl, box(751), box(2318), NULL);
   avl = remove_int(avl, 525);
-  avl = gpr_avl_add(avl, box(217), box(2320));
+  avl = gpr_avl_add(avl, box(217), box(2320), NULL);
   avl = remove_int(avl, 336);
-  avl = gpr_avl_add(avl, box(86), box(2322));
-  avl = gpr_avl_add(avl, box(81), box(2323));
-  avl = gpr_avl_add(avl, box(850), box(2324));
+  avl = gpr_avl_add(avl, box(86), box(2322), NULL);
+  avl = gpr_avl_add(avl, box(81), box(2323), NULL);
+  avl = gpr_avl_add(avl, box(850), box(2324), NULL);
   avl = remove_int(avl, 872);
-  avl = gpr_avl_add(avl, box(402), box(2326));
-  avl = gpr_avl_add(avl, box(54), box(2327));
-  avl = gpr_avl_add(avl, box(980), box(2328));
-  avl = gpr_avl_add(avl, box(845), box(2329));
+  avl = gpr_avl_add(avl, box(402), box(2326), NULL);
+  avl = gpr_avl_add(avl, box(54), box(2327), NULL);
+  avl = gpr_avl_add(avl, box(980), box(2328), NULL);
+  avl = gpr_avl_add(avl, box(845), box(2329), NULL);
   avl = remove_int(avl, 1004);
   avl = remove_int(avl, 273);
   avl = remove_int(avl, 879);
-  avl = gpr_avl_add(avl, box(354), box(2333));
-  avl = gpr_avl_add(avl, box(58), box(2334));
-  avl = gpr_avl_add(avl, box(127), box(2335));
+  avl = gpr_avl_add(avl, box(354), box(2333), NULL);
+  avl = gpr_avl_add(avl, box(58), box(2334), NULL);
+  avl = gpr_avl_add(avl, box(127), box(2335), NULL);
   avl = remove_int(avl, 84);
-  avl = gpr_avl_add(avl, box(360), box(2337));
+  avl = gpr_avl_add(avl, box(360), box(2337), NULL);
   avl = remove_int(avl, 648);
   avl = remove_int(avl, 488);
   avl = remove_int(avl, 585);
   avl = remove_int(avl, 230);
-  avl = gpr_avl_add(avl, box(887), box(2342));
+  avl = gpr_avl_add(avl, box(887), box(2342), NULL);
   avl = remove_int(avl, 558);
   avl = remove_int(avl, 958);
-  avl = gpr_avl_add(avl, box(822), box(2345));
+  avl = gpr_avl_add(avl, box(822), box(2345), NULL);
   avl = remove_int(avl, 1004);
   avl = remove_int(avl, 747);
-  avl = gpr_avl_add(avl, box(631), box(2348));
-  avl = gpr_avl_add(avl, box(442), box(2349));
+  avl = gpr_avl_add(avl, box(631), box(2348), NULL);
+  avl = gpr_avl_add(avl, box(442), box(2349), NULL);
   avl = remove_int(avl, 957);
   avl = remove_int(avl, 964);
-  avl = gpr_avl_add(avl, box(10), box(2352));
+  avl = gpr_avl_add(avl, box(10), box(2352), NULL);
   avl = remove_int(avl, 189);
-  avl = gpr_avl_add(avl, box(742), box(2354));
+  avl = gpr_avl_add(avl, box(742), box(2354), NULL);
   avl = remove_int(avl, 108);
-  avl = gpr_avl_add(avl, box(1014), box(2356));
+  avl = gpr_avl_add(avl, box(1014), box(2356), NULL);
   avl = remove_int(avl, 266);
   avl = remove_int(avl, 623);
   avl = remove_int(avl, 697);
-  avl = gpr_avl_add(avl, box(180), box(2360));
+  avl = gpr_avl_add(avl, box(180), box(2360), NULL);
   avl = remove_int(avl, 472);
-  avl = gpr_avl_add(avl, box(567), box(2362));
+  avl = gpr_avl_add(avl, box(567), box(2362), NULL);
   avl = remove_int(avl, 1020);
   avl = remove_int(avl, 273);
-  avl = gpr_avl_add(avl, box(864), box(2365));
-  avl = gpr_avl_add(avl, box(1009), box(2366));
+  avl = gpr_avl_add(avl, box(864), box(2365), NULL);
+  avl = gpr_avl_add(avl, box(1009), box(2366), NULL);
   avl = remove_int(avl, 224);
   avl = remove_int(avl, 81);
-  avl = gpr_avl_add(avl, box(653), box(2369));
+  avl = gpr_avl_add(avl, box(653), box(2369), NULL);
   avl = remove_int(avl, 67);
   avl = remove_int(avl, 102);
   avl = remove_int(avl, 76);
@@ -3513,51 +3515,51 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 169);
   avl = remove_int(avl, 232);
   avl = remove_int(avl, 79);
-  avl = gpr_avl_add(avl, box(509), box(2377));
+  avl = gpr_avl_add(avl, box(509), box(2377), NULL);
   avl = remove_int(avl, 900);
   avl = remove_int(avl, 822);
   avl = remove_int(avl, 945);
   avl = remove_int(avl, 356);
-  avl = gpr_avl_add(avl, box(443), box(2382));
-  avl = gpr_avl_add(avl, box(925), box(2383));
+  avl = gpr_avl_add(avl, box(443), box(2382), NULL);
+  avl = gpr_avl_add(avl, box(925), box(2383), NULL);
   avl = remove_int(avl, 994);
   avl = remove_int(avl, 324);
-  avl = gpr_avl_add(avl, box(291), box(2386));
+  avl = gpr_avl_add(avl, box(291), box(2386), NULL);
   avl = remove_int(avl, 94);
   avl = remove_int(avl, 795);
   avl = remove_int(avl, 42);
-  avl = gpr_avl_add(avl, box(613), box(2390));
+  avl = gpr_avl_add(avl, box(613), box(2390), NULL);
   avl = remove_int(avl, 289);
-  avl = gpr_avl_add(avl, box(980), box(2392));
+  avl = gpr_avl_add(avl, box(980), box(2392), NULL);
   avl = remove_int(avl, 316);
-  avl = gpr_avl_add(avl, box(281), box(2394));
-  avl = gpr_avl_add(avl, box(1006), box(2395));
+  avl = gpr_avl_add(avl, box(281), box(2394), NULL);
+  avl = gpr_avl_add(avl, box(1006), box(2395), NULL);
   avl = remove_int(avl, 776);
-  avl = gpr_avl_add(avl, box(108), box(2397));
-  avl = gpr_avl_add(avl, box(918), box(2398));
+  avl = gpr_avl_add(avl, box(108), box(2397), NULL);
+  avl = gpr_avl_add(avl, box(918), box(2398), NULL);
   avl = remove_int(avl, 721);
   avl = remove_int(avl, 563);
-  avl = gpr_avl_add(avl, box(925), box(2401));
+  avl = gpr_avl_add(avl, box(925), box(2401), NULL);
   avl = remove_int(avl, 448);
   avl = remove_int(avl, 198);
   avl = remove_int(avl, 1);
-  avl = gpr_avl_add(avl, box(160), box(2405));
+  avl = gpr_avl_add(avl, box(160), box(2405), NULL);
   avl = remove_int(avl, 515);
-  avl = gpr_avl_add(avl, box(284), box(2407));
-  avl = gpr_avl_add(avl, box(225), box(2408));
+  avl = gpr_avl_add(avl, box(284), box(2407), NULL);
+  avl = gpr_avl_add(avl, box(225), box(2408), NULL);
   avl = remove_int(avl, 304);
-  avl = gpr_avl_add(avl, box(714), box(2410));
-  avl = gpr_avl_add(avl, box(708), box(2411));
-  avl = gpr_avl_add(avl, box(624), box(2412));
+  avl = gpr_avl_add(avl, box(714), box(2410), NULL);
+  avl = gpr_avl_add(avl, box(708), box(2411), NULL);
+  avl = gpr_avl_add(avl, box(624), box(2412), NULL);
   avl = remove_int(avl, 662);
   avl = remove_int(avl, 825);
   avl = remove_int(avl, 383);
   avl = remove_int(avl, 381);
-  avl = gpr_avl_add(avl, box(194), box(2417));
+  avl = gpr_avl_add(avl, box(194), box(2417), NULL);
   avl = remove_int(avl, 280);
   avl = remove_int(avl, 25);
   avl = remove_int(avl, 633);
-  avl = gpr_avl_add(avl, box(897), box(2421));
+  avl = gpr_avl_add(avl, box(897), box(2421), NULL);
   avl = remove_int(avl, 636);
   avl = remove_int(avl, 596);
   avl = remove_int(avl, 757);
@@ -3567,33 +3569,33 @@ static void test_badcase3(void) {
   avl = remove_int(avl, 843);
   avl = remove_int(avl, 280);
   avl = remove_int(avl, 911);
-  avl = gpr_avl_add(avl, box(1008), box(2431));
+  avl = gpr_avl_add(avl, box(1008), box(2431), NULL);
   avl = remove_int(avl, 948);
   avl = remove_int(avl, 74);
   avl = remove_int(avl, 571);
-  avl = gpr_avl_add(avl, box(486), box(2435));
-  avl = gpr_avl_add(avl, box(285), box(2436));
+  avl = gpr_avl_add(avl, box(486), box(2435), NULL);
+  avl = gpr_avl_add(avl, box(285), box(2436), NULL);
   avl = remove_int(avl, 304);
   avl = remove_int(avl, 516);
-  avl = gpr_avl_add(avl, box(758), box(2439));
-  avl = gpr_avl_add(avl, box(776), box(2440));
+  avl = gpr_avl_add(avl, box(758), box(2439), NULL);
+  avl = gpr_avl_add(avl, box(776), box(2440), NULL);
   avl = remove_int(avl, 696);
-  avl = gpr_avl_add(avl, box(104), box(2442));
-  avl = gpr_avl_add(avl, box(700), box(2443));
-  avl = gpr_avl_add(avl, box(114), box(2444));
-  avl = gpr_avl_add(avl, box(567), box(2445));
+  avl = gpr_avl_add(avl, box(104), box(2442), NULL);
+  avl = gpr_avl_add(avl, box(700), box(2443), NULL);
+  avl = gpr_avl_add(avl, box(114), box(2444), NULL);
+  avl = gpr_avl_add(avl, box(567), box(2445), NULL);
   avl = remove_int(avl, 620);
-  avl = gpr_avl_add(avl, box(270), box(2447));
+  avl = gpr_avl_add(avl, box(270), box(2447), NULL);
   avl = remove_int(avl, 730);
-  avl = gpr_avl_add(avl, box(749), box(2449));
-  avl = gpr_avl_add(avl, box(443), box(2450));
+  avl = gpr_avl_add(avl, box(749), box(2449), NULL);
+  avl = gpr_avl_add(avl, box(443), box(2450), NULL);
   avl = remove_int(avl, 457);
-  avl = gpr_avl_add(avl, box(571), box(2452));
-  avl = gpr_avl_add(avl, box(626), box(2453));
+  avl = gpr_avl_add(avl, box(571), box(2452), NULL);
+  avl = gpr_avl_add(avl, box(626), box(2453), NULL);
   avl = remove_int(avl, 638);
   avl = remove_int(avl, 313);
 
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 static void test_stress(int amount_of_stress) {
@@ -3616,9 +3618,9 @@ static void test_stress(int amount_of_stress) {
     GPR_ASSERT(i);
     if (rand() < RAND_MAX / 2) {
       added[idx] = i;
-      printf("avl = gpr_avl_add(avl, box(%d), box(%d)); /* d=%d */\n", idx, i,
-             deletions);
-      avl = gpr_avl_add(avl, box(idx), box(i));
+      printf("avl = gpr_avl_add(avl, box(%d), box(%d), NULL); /* d=%d */\n",
+             idx, i, deletions);
+      avl = gpr_avl_add(avl, box(idx), box(i), NULL);
     } else {
       deletions += (added[idx] != 0);
       added[idx] = 0;
@@ -3634,7 +3636,7 @@ static void test_stress(int amount_of_stress) {
     }
   }
 
-  gpr_avl_unref(avl);
+  gpr_avl_unref(avl, NULL);
 }
 
 int main(int argc, char *argv[]) {