CASE
#define CASE(X) case X: return #X;
#undef CASE
#define CASE(c) case c: return #c;
#define CASE(x) case x: return #x;