rem: soap_revert(soap);
context: SOAP_FMAC3 enum ns1__StatusTrackingOptions * SOAP_FMAC4 soap_in_ns1__StatusTrackingOptions(struct soap *soap, const char *tag, enum ns1__StatusTrackingOptions *a, const char *type){	if (soap_element_begin_in(soap, tag))		return NULL;	if (*soap->type && soap_match_tag(soap, soap->type, type))	{	soap->error = SOAP_TYPE;		soap_revert(soap);		return NULL;	}	if (soap->null)	{	if (soap->mode & SOAP_XML_NIL)		{	soap->error = SOAP_NULL;			return NULL;		}		else			return a;	}	if (soap->body && !*soap->href)	{	a = (enum ns1__StatusTrackingOptions *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_ns1__StatusTrackingOptions, sizeof(enum ns1__StatusTrackingOptions), 0);		if (!a || soap_s2ns1__StatusTrackingOptions(soap, soap_value(soap), a))			return NULL;		if (soap_element_end_in(soap, tag))			return NULL;	}	else	{	a = (enum ns1__StatusTrackingOptions *)soap_id_forward(soap, soap->href, (void**)soap_id_enter(soap, soap->id, a, SOAP_TYPE_ns1__StatusTrackingOptions, sizeof(enum ns1__StatusTrackingOptions), 0), SOAP_TYPE_ns1__StatusTrackingOptions, sizeof(enum ns1__StatusTrackingOptions));		if (a && soap->alloced)			soap_default_ns1__StatusTrackingOptions(soap, a);		if (soap->body && soap_element_end_in(soap, tag))			return NULL;	}	return a;}