+#define array_slim(stem) \
+ if (stem ## max < array_roundsize (stem ## cnt >> 2)) \
+ { \
+ stem ## max = array_roundsize (stem ## cnt >> 1); \
+ base = realloc (base, sizeof (*base) * (stem ## max)); \
+ fprintf (stderr, "slimmed down " # stem " to %d\n", stem ## max);/*D*/\
+ }
+
+#define array_free(stem, idx) \
+ free (stem ## s idx); stem ## cnt idx = stem ## max idx = 0;
+