+#define rproperty_(Class, field) \
+ - (typeof(((Class*)nil)->_##field.operator->())) field { \
+ return _##field; \
+ }
+
+#define wproperty_(Class, field, Field) \
+ - (void) set##Field:(typeof(((Class*)nil)->_##field.operator->()))field { \
+ _##field = field; \
+ }
+
+#define roproperty(Class, field) \
+@implementation Class (Menes_##field) \
+rproperty_(Class, field) \
+@end
+
+#define rwproperty(Class, field, Field) \
+@implementation Class (Menes_##field) \
+rproperty_(Class, field) \
+wproperty_(Class, field, Field) \
+@end
+