+/* Creates and returns a new casewriter whose cases are passed
+ through TRANSLATE, based on INPUT and auxiliary data AUX.
+ (TRANSLATE may also return a null pointer, in which case no
+ case is written to the output.) The translated cases are then
+ written to SUBWRITER.
+
+ The cases returned by TRANSLATE must match OUTPUT_PROTO.
+
+ TRANSLATE takes ownership of each case passed to it. Thus, it
+ should either unref each case and return a new case, or
+ (unshare and then) modify and return the same case.
+
+ When the translating casewriter is destroyed, DESTROY will be
+ called to allow any state maintained by TRANSLATE to be freed.
+
+ After this function is called, SUBWRITER must not ever again
+ be referenced directly. It will be destroyed automatically
+ when the translating casewriter is destroyed. */