#define WORKAROUND(cx_, saver_) \
Workaround WORKAROUND_PASTE(w_, __LINE__)((cx_), (saver_))
#define WORKAROUND_PASTE(a_, b_) WORKAROUND_PASTE2(a_, b_)
#define WORKAROUND_PASTE2(a_, b_) a_ ## b_ /* having fun yet? */
#define SAVER(cx_, saver_) \
AutoValueRooter saver_(cx_); \
WORKAROUND((cx_), (saver_));