-#define _ISTACK struct _IStack { int I; int _23; list(_IStack); } *_Iatom,*_Istack=NULL;
-#define _SSTACK struct _SStack { char *S; int _23; list(_SSTACK); } *_Satom,*_Sstack=NULL;
-#define _FSTACK struct _FStack { FILE *F; int _23; list(_FSTACK); } *_Fatom,*_Fstack=NULL;
-#define _NEW_(ATOM,STACK,TYPE) (ATOM=get_mem(TYPE),ATOM->_23=1,push(ATOM,STACK);ATOM->_23||pop(ATOM,STACK)&&0;ATOM->_23--)
-#define _NEW_I for _NEW_(_Iatom,_Istack,_IStack)
-#define _NEW_S for _NEW_(_Satom,_Sstack,_SStack)
-#define _NEW_F for _NEW_(_Fatom,_Fstack,_FStack)
+#define _ARG1(ARG1,...) ARG1
+#define _ARG2(ARG1,ARG2,...) ARG2
+#define _ANYSTACK(TYPE,NAME) struct _##NAME##Atom { TYPE NAME; int C; list(_##NAME##Atom); } *_##NAME##atom,*_##NAME##stack=NULL;
+//#define _ISTACK struct _IAtom { int i; int C; list(_IAtom); } *_Iatom,*_Istack=NULL;
+//#define _SSTACK struct _SAtom { char *s; int C; list(_SAtom); } *_Satom,*_Sstack=NULL;
+//#define _FSTACK struct _FAtom { FILE *F; int C; list(_FAtom); } *_Fatom,*_Fstack=NULL;
+//#define _MSTACK struct _MAtom { void *ptr; size_t size; int C; tree(_MAtom); } *_Matom,*_Mstack=NULL;
+#define _CLL1_STACKS _ANYSTACK(int,I) _ANYSTACK(char *,S) _ANYSTACK(FILE *,F) _ANYSTACK(void *,CTX)
+//#define _NEW_(ATOM,STACK,TYPE) (ATOM=get_mem(TYPE),ATOM->C=1,push(ATOM,STACK);ATOM->C||(pop(ATOM,STACK),0);ATOM->C--)
+#define _NEW(NAME,VALUE) for(_##NAME##atom=get_mem(_##NAME##Atom),_##NAME##atom->NAME=(VALUE),_##NAME##atom->C=1,push(_##NAME##atom,_##NAME##stack);_##NAME##atom->C||(pop(_##NAME##atom,_##NAME##stack),0);_##NAME##atom->C--)
+//#define _NEW_I for _NEW_(_Iatom,_Istack,_IAtom)
+//#define _NEW_S for _NEW_(_Satom,_Sstack,_SAtom)
+//#define _NEW_F for _NEW_(_Fatom,_Fstack,_FAtom)