#define Val_mDOMString(s) (copy_string((char*) (s)))
#define mDOMString_val(v) ((mDOMStringRef) String_val(v))
#define mDOMNode_val(v) ((mDOMNodeRef) v)
+
+#define mDOMNode_option_mDOMNodeRef(p) (((p) != NULL) ? ml_some((value) (p)) : Val_unit)
+#define mDOMNodeRef_mDOMNode_option(v) ((v == Val_unit) ? NULL : (mDOMNodeRef)Field((v),0))
+#define Val_mDOMNodeRef(p) (mDOMNode_option_mDOMNodeRef(p))
+#define mDOMNodeRef_val(v) (mDOMNodeRef_mDOMNode_option(v))