__take_second_arg
__take_second_arg(n, \
#define ____and(arg1_or_junk, y) __take_second_arg(arg1_or_junk y, 0)
#define ____or(arg1_or_junk, y) __take_second_arg(arg1_or_junk 1, y)
#define ____is_defined(arg1_or_junk) __take_second_arg(arg1_or_junk 1, 0)
#define ____and(arg1_or_junk, y) __take_second_arg(arg1_or_junk y, 0)
#define ____or(arg1_or_junk, y) __take_second_arg(arg1_or_junk 1, y)
#define ____is_defined(arg1_or_junk) __take_second_arg(arg1_or_junk 1, 0)
#define ____is_defined(arg1_or_junk) __take_second_arg(arg1_or_junk 1, 0)