struct val {
char type;
union {
id object;
SEL selector;
const char *string;
char _char;
unsigned char _uchar;
short _short;
unsigned short _ushort;
int _int;
unsigned int _uint;
long _long;
unsigned long _ulong;
float _float;
double _double;
} val;
}