#define Data 42
#if CLASS!=Data
#undef Data
friend class Data;
#endif
#undef Data

#define Global_data 42
#if CLASS!=Global_data
#undef Global_data
friend class Global_data;
#endif
#undef Global_data

#define node 42
#if CLASS!=node
#undef node
friend class node;
#endif
#undef node

#define binary 42
#if CLASS!=binary
#undef binary
friend class binary;
#endif
#undef binary

#define branch 42
#if CLASS!=branch
#undef branch
friend class branch;
#endif
#undef branch

#define leaf 42
#if CLASS!=leaf
#undef leaf
friend class leaf;
#endif
#undef leaf

#define nary 42
#if CLASS!=nary
#undef nary
friend class nary;
#endif
#undef nary

#define nary_branch 42
#if CLASS!=nary_branch
#undef nary_branch
friend class nary_branch;
#endif
#undef nary_branch

#define nary_leaf 42
#if CLASS!=nary_leaf
#undef nary_leaf
friend class nary_leaf;
#endif
#undef nary_leaf

#define it_core 42
#if CLASS!=it_core
#undef it_core
friend class it_core;
#endif
#undef it_core

#define it 42
#if CLASS!=it
#undef it
friend class it;
#endif
#undef it

#define cover 42
#if CLASS!=cover
#undef cover
friend class cover;
#endif
#undef cover

#define tree 42
#if CLASS!=tree
#undef tree
friend class tree;
#endif
#undef tree

