+/**
+ * TAL_TAKE - fake tal_t to indicate function will own arguments.
+ *
+ * Various functions take a context on which to allocate: if you use
+ * TAL_TAKE there instead, it means that the argument(s) are actually
+ * tal objects. The returned value will share the same parent; it may
+ * even be the same pointer as the arguments. The arguments themselves
+ * will be reused, freed, or made a child of the return value: they are
+ * no longer valid for external use.
+ */
+#define TAL_TAKE ((tal_t *)-2L)
+