/* Generated automatically by the YAZ ASN.1 Compiler 0.3 */
/* Module-C: ISO-10161-ILL-1 */

#include <yaz/ill-core.h>

int ill_APDU (ODR o, ILL_APDU **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{-1, -1, -1, ILL_APDU_ILL_Request,
		 (Odr_fun) ill_Request, "illRequest"},
		{-1, -1, -1, ILL_APDU_Forward_Notification,
		 (Odr_fun) ill_Forward_Notification, "Forward_Notification"},
		{-1, -1, -1, ILL_APDU_Shipped,
		 (Odr_fun) ill_Shipped, "Shipped"},
		{-1, -1, -1, ILL_APDU_ILL_Answer,
		 (Odr_fun) ill_Answer, "illAnswer"},
		{-1, -1, -1, ILL_APDU_Conditional_Reply,
		 (Odr_fun) ill_Conditional_Reply, "Conditional_Reply"},
		{-1, -1, -1, ILL_APDU_Cancel,
		 (Odr_fun) ill_Cancel, "Cancel"},
		{-1, -1, -1, ILL_APDU_Cancel_Reply,
		 (Odr_fun) ill_Cancel_Reply, "Cancel_Reply"},
		{-1, -1, -1, ILL_APDU_Received,
		 (Odr_fun) ill_Received, "Received"},
		{-1, -1, -1, ILL_APDU_Recall,
		 (Odr_fun) ill_Recall, "Recall"},
		{-1, -1, -1, ILL_APDU_Returned,
		 (Odr_fun) ill_Returned, "Returned"},
		{-1, -1, -1, ILL_APDU_Checked_In,
		 (Odr_fun) ill_Checked_In, "Checked_In"},
		{-1, -1, -1, ILL_APDU_Overdue,
		 (Odr_fun) ill_Overdue, "Overdue"},
		{-1, -1, -1, ILL_APDU_Renew,
		 (Odr_fun) ill_Renew, "Renew"},
		{-1, -1, -1, ILL_APDU_Renew_Answer,
		 (Odr_fun) ill_Renew_Answer, "Renew_Answer"},
		{-1, -1, -1, ILL_APDU_Lost,
		 (Odr_fun) ill_Lost, "Lost"},
		{-1, -1, -1, ILL_APDU_Damaged,
		 (Odr_fun) ill_Damaged, "Damaged"},
		{-1, -1, -1, ILL_APDU_Message,
		 (Odr_fun) ill_Message, "Message"},
		{-1, -1, -1, ILL_APDU_Status_Query,
		 (Odr_fun) ill_Status_Query, "Status_Query"},
		{-1, -1, -1, ILL_APDU_Status_Or_Error_Report,
		 (Odr_fun) ill_Status_Or_Error_Report, "Status_Or_Error_Report"},
		{-1, -1, -1, ILL_APDU_Expired,
		 (Odr_fun) ill_Expired, "Expired"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_initmember(o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Request (ODR o, ILL_Request **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 1, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Request *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_Transaction_Type,
			&(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") &&
		odr_implicit_tag (o, ill_Delivery_Address,
			&(*p)->delivery_address, ODR_CONTEXT, 6, 1, "delivery_address") &&
		ill_Delivery_Service(o, &(*p)->delivery_service, 1, "delivery_service") &&
		odr_implicit_tag (o, ill_Delivery_Address,
			&(*p)->billing_address, ODR_CONTEXT, 8, 1, "billing_address") &&
		odr_implicit_settag (o, ODR_CONTEXT, 9) &&
		odr_sequence_of(o, (Odr_fun) ill_Service_Type, &(*p)->iLL_service_type,
		  &(*p)->num_iLL_service_type, "iLL_service_type") &&
		odr_explicit_tag (o, odr_external,
			&(*p)->responder_specific_service, ODR_CONTEXT, 10, 1, "responder_specific_service") &&
		odr_implicit_tag (o, ill_Requester_Optional_Messages_Type,
			&(*p)->requester_optional_messages, ODR_CONTEXT, 11, 0, "requester_optional_messages") &&
		odr_implicit_tag (o, ill_Search_Type,
			&(*p)->search_type, ODR_CONTEXT, 12, 1, "search_type") &&
		odr_implicit_settag (o, ODR_CONTEXT, 13) &&
		(odr_sequence_of(o, (Odr_fun) ill_Supply_Medium_Info_Type, &(*p)->supply_medium_info_type,
		  &(*p)->num_supply_medium_info_type, "supply_medium_info_type") || odr_ok(o)) &&
		odr_implicit_tag (o, ill_Place_On_Hold_Type,
			&(*p)->place_on_hold, ODR_CONTEXT, 14, 0, "place_on_hold") &&
		odr_implicit_tag (o, ill_Client_Id,
			&(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") &&
		odr_implicit_tag (o, ill_Item_Id,
			&(*p)->item_id, ODR_CONTEXT, 16, 0, "item_id") &&
		odr_implicit_tag (o, ill_Supplemental_Item_Description,
			&(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
		odr_implicit_tag (o, ill_Cost_Info_Type,
			&(*p)->cost_info_type, ODR_CONTEXT, 18, 1, "cost_info_type") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->copyright_compliance, ODR_CONTEXT, 19, 1, "copyright_compliance") &&
		odr_implicit_tag (o, ill_Third_Party_Info_Type,
			&(*p)->third_party_info_type, ODR_CONTEXT, 20, 1, "third_party_info_type") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->retry_flag, ODR_CONTEXT, 21, 0, "retry_flag") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->forward_flag, ODR_CONTEXT, 22, 0, "forward_flag") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->forward_note, ODR_CONTEXT, 47, 1, "forward_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->iLL_request_extensions,
		  &(*p)->num_iLL_request_extensions, "iLL_request_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Forward_Notification (ODR o, ILL_Forward_Notification **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 2, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Forward_Notification *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 0, "responder_id") &&
		odr_implicit_tag (o, ill_System_Address,
			&(*p)->responder_address, ODR_CONTEXT, 24, 1, "responder_address") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->intermediary_id, ODR_CONTEXT, 25, 0, "intermediary_id") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->notification_note, ODR_CONTEXT, 48, 1, "notification_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->forward_notification_extensions,
		  &(*p)->num_forward_notification_extensions, "forward_notification_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Shipped (ODR o, ILL_Shipped **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 3, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Shipped *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_System_Address,
			&(*p)->responder_address, ODR_CONTEXT, 24, 1, "responder_address") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->intermediary_id, ODR_CONTEXT, 25, 1, "intermediary_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->supplier_id, ODR_CONTEXT, 26, 1, "supplier_id") &&
		odr_implicit_tag (o, ill_Client_Id,
			&(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") &&
		odr_implicit_tag (o, ill_Transaction_Type,
			&(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") &&
		odr_implicit_tag (o, ill_Supplemental_Item_Description,
			&(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
		odr_implicit_tag (o, ill_Shipped_Service_Type,
			&(*p)->shipped_service_type, ODR_CONTEXT, 27, 0, "shipped_service_type") &&
		odr_implicit_tag (o, ill_Responder_Optional_Messages_Type,
			&(*p)->responder_optional_messages, ODR_CONTEXT, 28, 1, "responder_optional_messages") &&
		odr_implicit_tag (o, ill_Supply_Details,
			&(*p)->supply_details, ODR_CONTEXT, 29, 0, "supply_details") &&
		odr_implicit_tag (o, ill_Postal_Address,
			&(*p)->return_to_address, ODR_CONTEXT, 30, 1, "return_to_address") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->shipped_extensions,
		  &(*p)->num_shipped_extensions, "shipped_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Answer (ODR o, ILL_Answer **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Answer_conditional_results,
		(Odr_fun) ill_Conditional_Results, "conditional_results"},
		{ODR_EXPLICIT, ODR_CONTEXT, 2, ILL_Answer_retry_results,
		(Odr_fun) ill_Retry_Results, "retry_results"},
		{ODR_EXPLICIT, ODR_CONTEXT, 3, ILL_Answer_unfilled_results,
		(Odr_fun) ill_Unfilled_Results, "unfilled_results"},
		{ODR_EXPLICIT, ODR_CONTEXT, 4, ILL_Answer_locations_results,
		(Odr_fun) ill_Locations_Results, "locations_results"},
		{ODR_EXPLICIT, ODR_CONTEXT, 5, ILL_Answer_will_supply_results,
		(Odr_fun) ill_Will_Supply_Results, "will_supply_results"},
		{ODR_EXPLICIT, ODR_CONTEXT, 6, ILL_Answer_hold_placed_results,
		(Odr_fun) ill_Hold_Placed_Results, "hold_placed_results"},
		{ODR_EXPLICIT, ODR_CONTEXT, 7, ILL_Answer_estimate_results,
		(Odr_fun) ill_Estimate_Results, "estimate_results"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 4, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Answer *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_Transaction_Results,
			&(*p)->transaction_results, ODR_CONTEXT, 31, 0, "transaction_results") &&
		((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 32, "results_explanation") &&
		odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
		odr_constructed_end (o)) || odr_ok(o)) &&
		odr_explicit_tag (o, odr_external,
			&(*p)->responder_specific_results, ODR_CONTEXT, 33, 1, "responder_specific_results") &&
		odr_implicit_tag (o, ill_Supplemental_Item_Description,
			&(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
		odr_implicit_tag (o, ill_Send_To_List_Type,
			&(*p)->send_to_list, ODR_CONTEXT, 23, 1, "send_to_list") &&
		odr_implicit_tag (o, ill_Already_Tried_List_Type,
			&(*p)->already_tried_list, ODR_CONTEXT, 34, 1, "already_tried_list") &&
		odr_implicit_tag (o, ill_Responder_Optional_Messages_Type,
			&(*p)->responder_optional_messages, ODR_CONTEXT, 28, 1, "responder_optional_messages") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->ill_answer_extensions,
		  &(*p)->num_ill_answer_extensions, "ill_answer_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Conditional_Reply (ODR o, ILL_Conditional_Reply **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 5, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Conditional_Reply *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->conditional_reply_extensions,
		  &(*p)->num_conditional_reply_extensions, "conditional_reply_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Cancel (ODR o, ILL_Cancel **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 6, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Cancel *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->cancel_extensions,
		  &(*p)->num_cancel_extensions, "cancel_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Cancel_Reply (ODR o, ILL_Cancel_Reply **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 7, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Cancel_Reply *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->cancel_reply_extensions,
		  &(*p)->num_cancel_reply_extensions, "cancel_reply_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Received (ODR o, ILL_Received **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 8, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Received *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->supplier_id, ODR_CONTEXT, 26, 1, "supplier_id") &&
		odr_implicit_tag (o, ill_Supplemental_Item_Description,
			&(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_received, ODR_CONTEXT, 36, 0, "date_received") &&
		odr_implicit_tag (o, ill_Shipped_Service_Type,
			&(*p)->shipped_service_type, ODR_CONTEXT, 27, 0, "shipped_service_type") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->received_extensions,
		  &(*p)->num_received_extensions, "received_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Recall (ODR o, ILL_Recall **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 9, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Recall *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->recall_extensions,
		  &(*p)->num_recall_extensions, "recall_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Returned (ODR o, ILL_Returned **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 10, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Returned *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_Supplemental_Item_Description,
			&(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_returned, ODR_CONTEXT, 37, 0, "date_returned") &&
		odr_explicit_tag (o, ill_Transportation_Mode,
			&(*p)->returned_via, ODR_CONTEXT, 38, 1, "returned_via") &&
		odr_implicit_tag (o, ill_Amount,
			&(*p)->insured_for, ODR_CONTEXT, 39, 1, "insured_for") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->returned_extensions,
		  &(*p)->num_returned_extensions, "returned_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Checked_In (ODR o, ILL_Checked_In **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 11, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Checked_In *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_checked_in, ODR_CONTEXT, 40, 0, "date_checked_in") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->checked_in_extensions,
		  &(*p)->num_checked_in_extensions, "checked_in_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Overdue_ExtensionS (ODR o, ILL_Overdue_ExtensionS **p, int opt, const char *name)
{
	if (!odr_initmember (o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_sequence_of (o, (Odr_fun) ill_Extension, &(*p)->elements,
		&(*p)->num, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Overdue (ODR o, ILL_Overdue **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 12, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Overdue *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_Date_Due,
			&(*p)->date_due, ODR_CONTEXT, 41, 0, "date_due") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
		odr_explicit_tag (o, ill_Overdue_ExtensionS,
			&(*p)->overdue_extensions, ODR_CONTEXT, 49, 1, "overdue_extensions") &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Renew (ODR o, ILL_Renew **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 13, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Renew *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->desired_due_date, ODR_CONTEXT, 42, 1, "desired_due_date") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->renew_extensions,
		  &(*p)->num_renew_extensions, "renew_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Renew_Answer (ODR o, ILL_Renew_Answer **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 14, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Renew_Answer *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
		odr_implicit_tag (o, ill_Date_Due,
			&(*p)->date_due, ODR_CONTEXT, 41, 1, "date_due") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->renew_answer_extensions,
		  &(*p)->num_renew_answer_extensions, "renew_answer_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Lost (ODR o, ILL_Lost **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 15, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Lost *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->lost_extensions,
		  &(*p)->num_lost_extensions, "lost_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Damaged (ODR o, ILL_Damaged **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 16, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Damaged *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_Damaged_Details,
			&(*p)->damaged_details, ODR_CONTEXT, 5, 1, "damaged_details") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->damaged_extensions,
		  &(*p)->num_damaged_extensions, "damaged_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Message (ODR o, ILL_Message **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 17, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Message *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->note, ODR_CONTEXT, 46, 0, "note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->message_extensions,
		  &(*p)->num_message_extensions, "message_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Status_Query (ODR o, ILL_Status_Query **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 18, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Status_Query *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->status_query_extensions,
		  &(*p)->num_status_query_extensions, "status_query_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Status_Or_Error_Report (ODR o, ILL_Status_Or_Error_Report **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 19, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Status_Or_Error_Report *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_tag (o, ill_Reason_No_Report,
			&(*p)->reason_no_report, ODR_CONTEXT, 43, 1, "reason_no_report") &&
		odr_implicit_tag (o, ill_Status_Report,
			&(*p)->status_report, ODR_CONTEXT, 44, 1, "status_report") &&
		odr_implicit_tag (o, ill_Error_Report,
			&(*p)->error_report, ODR_CONTEXT, 45, 1, "error_report") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->status_or_error_report_extensions,
		  &(*p)->num_status_or_error_report_extensions, "status_or_error_report_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Expired (ODR o, ILL_Expired **p, int opt, const char *name)
{
	if (!odr_constructed_begin (o, p, ODR_APPLICATION, 20, name))
		return odr_missing(o, opt, name);
	if (o->direction == ODR_DECODE)
		*p = (ILL_Expired *) odr_malloc (o, sizeof(**p));
	if (!odr_sequence_begin (o, p, sizeof(**p), 0))
	{
		*p = 0;
		return 0;
	}
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
		odr_implicit_tag (o, ill_Transaction_Id,
			&(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
		odr_implicit_tag (o, ill_Service_Date_Time,
			&(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
		odr_implicit_settag (o, ODR_CONTEXT, 49) &&
		(odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->expired_extensions,
		  &(*p)->num_expired_extensions, "expired_extensions") || odr_ok(o)) &&
		odr_sequence_end (o) &&
		odr_constructed_end (o);
}

int ill_Account_Number (ODR o, ILL_Account_Number **p, int opt, const char *name)
{
	return ill_String (o, p, opt, name);
}

int ill_Already_Forwarded (ODR o, ILL_Already_Forwarded **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->responder_id, ODR_CONTEXT, 0, 0, "responder_id") &&
		odr_implicit_tag (o, ill_System_Address,
			&(*p)->responder_address, ODR_CONTEXT, 1, 1, "responder_address") &&
		odr_sequence_end (o);
}

int ill_Already_Tried_List_Type (ODR o, ILL_Already_Tried_List_Type **p, int opt, const char *name)
{
	if (!odr_initmember (o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_sequence_of (o, (Odr_fun) ill_System_Id, &(*p)->elements,
		&(*p)->num, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Amount (ODR o, ILL_Amount **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_visiblestring,
			&(*p)->currency_code, ODR_CONTEXT, 0, 1, "currency_code") &&
		odr_implicit_tag (o, ill_AmountString,
			&(*p)->monetary_value, ODR_CONTEXT, 1, 0, "monetary_value") &&
		odr_sequence_end (o);
}

int ill_AmountString (ODR o, ILL_AmountString **p, int opt, const char *name)
{
	return odr_visiblestring (o, p, opt, name);
}

int ill_Client_Id (ODR o, ILL_Client_Id **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_String,
			&(*p)->client_name, ODR_CONTEXT, 0, 1, "client_name") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->client_status, ODR_CONTEXT, 1, 1, "client_status") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->client_identifier, ODR_CONTEXT, 2, 1, "client_identifier") &&
		odr_sequence_end (o);
}

int ill_Conditional_Results (ODR o, ILL_Conditional_Results **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_enum,
			&(*p)->conditions, ODR_CONTEXT, 0, 0, "conditions") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_for_reply, ODR_CONTEXT, 1, 1, "date_for_reply") &&
		odr_implicit_settag (o, ODR_CONTEXT, 2) &&
		(odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
		  &(*p)->num_locations, "locations") || odr_ok(o)) &&
		ill_Delivery_Service(o, &(*p)->proposed_delivery_service, 1, "proposed_delivery_service") &&
		odr_sequence_end (o);
}

int ill_Cost_Info_Type (ODR o, ILL_Cost_Info_Type **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_Account_Number,
			&(*p)->account_number, ODR_CONTEXT, 0, 1, "account_number") &&
		odr_implicit_tag (o, ill_Amount,
			&(*p)->maximum_cost, ODR_CONTEXT, 1, 1, "maximum_cost") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->reciprocal_agreement, ODR_CONTEXT, 2, 0, "reciprocal_agreement") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->will_pay_fee, ODR_CONTEXT, 3, 0, "will_pay_fee") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->payment_provided, ODR_CONTEXT, 4, 0, "payment_provided") &&
		odr_sequence_end (o);
}

int ill_Current_State (ODR o, ILL_Current_State **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Damaged_DetailsSpecific_units (ODR o, ILL_Damaged_DetailsSpecific_units **p, int opt, const char *name)
{
	if (!odr_initmember (o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_sequence_of (o, (Odr_fun) odr_integer, &(*p)->elements,
		&(*p)->num, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Damaged_Details (ODR o, ILL_Damaged_Details **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Damaged_Details_complete_document,
		(Odr_fun) odr_null, "complete_document"},
		{ODR_IMPLICIT, ODR_CONTEXT, 2, ILL_Damaged_Details_specific_units,
		(Odr_fun) ill_Damaged_DetailsSpecific_units, "specific_units"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_oid,
			&(*p)->document_type_id, ODR_CONTEXT, 0, 1, "document_type_id") &&
		odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
		odr_sequence_end (o);
}

int ill_Date_Due (ODR o, ILL_Date_Due **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_due_field, ODR_CONTEXT, 0, 0, "date_due_field") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->renewable, ODR_CONTEXT, 1, 0, "renewable") &&
		odr_sequence_end (o);
}

int ill_Delivery_Address (ODR o, ILL_Delivery_Address **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_Postal_Address,
			&(*p)->postal_address, ODR_CONTEXT, 0, 1, "postal_address") &&
		odr_implicit_tag (o, ill_System_Address,
			&(*p)->electronic_address, ODR_CONTEXT, 1, 1, "electronic_address") &&
		odr_sequence_end (o);
}

int ill_Delivery_ServiceElectronic_delivery (ODR o, ILL_Delivery_ServiceElectronic_delivery **p, int opt, const char *name)
{
	if (!odr_initmember (o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_sequence_of (o, (Odr_fun) ill_Electronic_Delivery_Service, &(*p)->elements,
		&(*p)->num, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Delivery_Service (ODR o, ILL_Delivery_Service **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_EXPLICIT, ODR_CONTEXT, 7, ILL_Delivery_Service_physical_delivery,
		(Odr_fun) ill_Transportation_Mode, "physical_delivery"},
		{ODR_IMPLICIT, ODR_CONTEXT, 50, ILL_Delivery_Service_electronic_delivery,
		(Odr_fun) ill_Delivery_ServiceElectronic_delivery, "electronic_delivery"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_initmember(o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Electronic_Delivery_Service_0 (ODR o, ILL_Electronic_Delivery_Service_0 **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_oid,
			&(*p)->e_delivery_mode, ODR_CONTEXT, 0, 0, "e_delivery_mode") &&
		odr_explicit_tag (o, odr_any,
			&(*p)->e_delivery_parameters, ODR_CONTEXT, 1, 0, "e_delivery_parameters") &&
		odr_sequence_end (o);
}

int ill_Electronic_Delivery_Service_1 (ODR o, ILL_Electronic_Delivery_Service_1 **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_oid,
			&(*p)->document_type_id, ODR_CONTEXT, 2, 0, "document_type_id") &&
		odr_explicit_tag (o, odr_any,
			&(*p)->document_type_parameters, ODR_CONTEXT, 3, 0, "document_type_parameters") &&
		odr_sequence_end (o);
}

int ill_Electronic_Delivery_Service (ODR o, ILL_Electronic_Delivery_Service **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_Electronic_Delivery_Service_e_delivery_address,
		(Odr_fun) ill_System_Address, "e_delivery_address"},
		{ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Electronic_Delivery_Service_e_delivery_id,
		(Odr_fun) ill_System_Id, "e_delivery_id"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_Electronic_Delivery_Service_0,
			&(*p)->e_delivery_service, ODR_CONTEXT, 0, 1, "e_delivery_service") &&
		odr_implicit_tag (o, ill_Electronic_Delivery_Service_1,
			&(*p)->document_type, ODR_CONTEXT, 1, 1, "document_type") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->e_delivery_description, ODR_CONTEXT, 4, 1, "e_delivery_description") &&
		odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 5, "e_delivery_details") &&
		odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
		odr_constructed_end (o) &&
		odr_explicit_tag (o, ill_String,
			&(*p)->name_or_code, ODR_CONTEXT, 6, 1, "name_or_code") &&
		odr_implicit_tag (o, ill_ISO_Time,
			&(*p)->delivery_time, ODR_CONTEXT, 7, 1, "delivery_time") &&
		odr_sequence_end (o);
}

int ill_Error_Report (ODR o, ILL_Error_Report **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_String,
			&(*p)->correlation_information, ODR_CONTEXT, 0, 0, "correlation_information") &&
		odr_implicit_tag (o, ill_Report_Source,
			&(*p)->report_source, ODR_CONTEXT, 1, 0, "report_source") &&
		odr_explicit_tag (o, ill_User_Error_Report,
			&(*p)->user_error_report, ODR_CONTEXT, 2, 1, "user_error_report") &&
		odr_explicit_tag (o, ill_Provider_Error_Report,
			&(*p)->provider_error_report, ODR_CONTEXT, 3, 1, "provider_error_report") &&
		odr_sequence_end (o);
}

int ill_Estimate_Results (ODR o, ILL_Estimate_Results **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_String,
			&(*p)->cost_estimate, ODR_CONTEXT, 0, 0, "cost_estimate") &&
		odr_implicit_settag (o, ODR_CONTEXT, 1) &&
		(odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
		  &(*p)->num_locations, "locations") || odr_ok(o)) &&
		odr_sequence_end (o);
}

int ill_Extension (ODR o, ILL_Extension **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_integer,
			&(*p)->identifier, ODR_CONTEXT, 0, 0, "identifier") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->critical, ODR_CONTEXT, 1, 0, "critical") &&
		odr_explicit_tag (o, odr_any,
			&(*p)->item, ODR_CONTEXT, 2, 0, "item") &&
		odr_sequence_end (o);
}

int ill_General_Problem (ODR o, ILL_General_Problem **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_History_Report (ODR o, ILL_History_Report **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_requested, ODR_CONTEXT, 0, 1, "date_requested") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->author, ODR_CONTEXT, 1, 1, "author") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->title, ODR_CONTEXT, 2, 1, "title") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->author_of_article, ODR_CONTEXT, 3, 1, "author_of_article") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->title_of_article, ODR_CONTEXT, 4, 1, "title_of_article") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_of_last_transition, ODR_CONTEXT, 5, 0, "date_of_last_transition") &&
		odr_implicit_tag (o, odr_enum,
			&(*p)->most_recent_service, ODR_CONTEXT, 6, 0, "most_recent_service") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_of_most_recent_service, ODR_CONTEXT, 7, 0, "date_of_most_recent_service") &&
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->initiator_of_most_recent_service, ODR_CONTEXT, 8, 0, "initiator_of_most_recent_service") &&
		odr_implicit_tag (o, ill_Shipped_Service_Type,
			&(*p)->shipped_service_type, ODR_CONTEXT, 9, 1, "shipped_service_type") &&
		odr_implicit_tag (o, ill_Transaction_Results,
			&(*p)->transaction_results, ODR_CONTEXT, 10, 1, "transaction_results") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->most_recent_service_note, ODR_CONTEXT, 11, 1, "most_recent_service_note") &&
		odr_sequence_end (o);
}

int ill_Hold_Placed_Results (ODR o, ILL_Hold_Placed_Results **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->estimated_date_available, ODR_CONTEXT, 0, 0, "estimated_date_available") &&
		odr_implicit_tag (o, ill_Medium_Type,
			&(*p)->hold_placed_medium_type, ODR_CONTEXT, 1, 1, "hold_placed_medium_type") &&
		odr_implicit_settag (o, ODR_CONTEXT, 2) &&
		(odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
		  &(*p)->num_locations, "locations") || odr_ok(o)) &&
		odr_sequence_end (o);
}

int ill_APDU_Type (ODR o, ILL_APDU_Type **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Service_Type (ODR o, ILL_Service_Type **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_String (ODR o, ILL_String **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{-1, -1, -1, ILL_String_GeneralString,
		 (Odr_fun) odr_generalstring, "GeneralString"},
		{-1, -1, -1, ILL_String_EDIFACTString,
		 (Odr_fun) ill_EDIFACTString, "EDIFACTString"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_initmember(o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Intermediary_Problem (ODR o, ILL_Intermediary_Problem **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_ISO_Date (ODR o, ILL_ISO_Date **p, int opt, const char *name)
{
	return odr_visiblestring (o, p, opt, name);
}

int ill_ISO_Time (ODR o, ILL_ISO_Time **p, int opt, const char *name)
{
	return odr_visiblestring (o, p, opt, name);
}

int ill_Item_Id (ODR o, ILL_Item_Id **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_enum,
			&(*p)->item_type, ODR_CONTEXT, 0, 1, "item_type") &&
		odr_implicit_tag (o, ill_Medium_Type,
			&(*p)->held_medium_type, ODR_CONTEXT, 1, 1, "held_medium_type") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->call_number, ODR_CONTEXT, 2, 1, "call_number") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->author, ODR_CONTEXT, 3, 1, "author") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->title, ODR_CONTEXT, 4, 1, "title") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->sub_title, ODR_CONTEXT, 5, 1, "sub_title") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->sponsoring_body, ODR_CONTEXT, 6, 1, "sponsoring_body") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->place_of_publication, ODR_CONTEXT, 7, 1, "place_of_publication") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->publisher, ODR_CONTEXT, 8, 1, "publisher") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->series_title_number, ODR_CONTEXT, 9, 1, "series_title_number") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->volume_issue, ODR_CONTEXT, 10, 1, "volume_issue") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->edition, ODR_CONTEXT, 11, 1, "edition") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->publication_date, ODR_CONTEXT, 12, 1, "publication_date") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->publication_date_of_component, ODR_CONTEXT, 13, 1, "publication_date_of_component") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->author_of_article, ODR_CONTEXT, 14, 1, "author_of_article") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->title_of_article, ODR_CONTEXT, 15, 1, "title_of_article") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->pagination, ODR_CONTEXT, 16, 1, "pagination") &&
		odr_explicit_tag (o, odr_external,
			&(*p)->national_bibliography_no, ODR_CONTEXT, 17, 1, "national_bibliography_no") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->iSBN, ODR_CONTEXT, 18, 1, "iSBN") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->iSSN, ODR_CONTEXT, 19, 1, "iSSN") &&
		odr_explicit_tag (o, odr_external,
			&(*p)->system_no, ODR_CONTEXT, 20, 1, "system_no") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->additional_no_letters, ODR_CONTEXT, 21, 1, "additional_no_letters") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->verification_reference_source, ODR_CONTEXT, 22, 1, "verification_reference_source") &&
		odr_sequence_end (o);
}

int ill_Location_Info (ODR o, ILL_Location_Info **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->location_id, ODR_CONTEXT, 0, 0, "location_id") &&
		odr_implicit_tag (o, ill_System_Address,
			&(*p)->location_address, ODR_CONTEXT, 1, 1, "location_address") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->location_note, ODR_CONTEXT, 2, 1, "location_note") &&
		odr_sequence_end (o);
}

int ill_Locations_Results (ODR o, ILL_Locations_Results **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_Reason_Locs_Provided,
			&(*p)->reason_locs_provided, ODR_CONTEXT, 0, 1, "reason_locs_provided") &&
		odr_implicit_settag (o, ODR_CONTEXT, 1) &&
		odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
		  &(*p)->num_locations, "locations") &&
		odr_sequence_end (o);
}

int ill_Medium_Type (ODR o, ILL_Medium_Type **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Name_Of_Person_Or_Institution (ODR o, ILL_Name_Of_Person_Or_Institution **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_EXPLICIT, ODR_CONTEXT, 0, ILL_Name_Of_Person_Or_Institution_name_of_person,
		(Odr_fun) ill_String, "name_of_person"},
		{ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Name_Of_Person_Or_Institution_name_of_institution,
		(Odr_fun) ill_String, "name_of_institution"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_initmember(o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Person_Or_Institution_Symbol (ODR o, ILL_Person_Or_Institution_Symbol **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_EXPLICIT, ODR_CONTEXT, 0, ILL_Person_Or_Institution_Symbol_person_symbol,
		(Odr_fun) ill_String, "person_symbol"},
		{ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Person_Or_Institution_Symbol_institution_symbol,
		(Odr_fun) ill_String, "institution_symbol"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_initmember(o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Place_On_Hold_Type (ODR o, ILL_Place_On_Hold_Type **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Postal_Address (ODR o, ILL_Postal_Address **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_Name_Of_Person_Or_Institution,
			&(*p)->name_of_person_or_institution, ODR_CONTEXT, 0, 1, "name_of_person_or_institution") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->extended_postal_delivery_address, ODR_CONTEXT, 1, 1, "extended_postal_delivery_address") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->street_and_number, ODR_CONTEXT, 2, 1, "street_and_number") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->post_office_box, ODR_CONTEXT, 3, 1, "post_office_box") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->city, ODR_CONTEXT, 4, 1, "city") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->region, ODR_CONTEXT, 5, 1, "region") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->country, ODR_CONTEXT, 6, 1, "country") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->postal_code, ODR_CONTEXT, 7, 1, "postal_code") &&
		odr_sequence_end (o);
}

int ill_Provider_Error_Report (ODR o, ILL_Provider_Error_Report **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_Provider_Error_Report_general_problem,
		(Odr_fun) ill_General_Problem, "general_problem"},
		{ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Provider_Error_Report_transaction_id_problem,
		(Odr_fun) ill_Transaction_Id_Problem, "transaction_id_problem"},
		{ODR_IMPLICIT, ODR_CONTEXT, 2, ILL_Provider_Error_Report_state_transition_prohibited,
		(Odr_fun) ill_State_Transition_Prohibited, "state_transition_prohibited"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_initmember(o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Reason_Locs_Provided (ODR o, ILL_Reason_Locs_Provided **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Reason_No_Report (ODR o, ILL_Reason_No_Report **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Reason_Unfilled (ODR o, ILL_Reason_Unfilled **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Report_Source (ODR o, ILL_Report_Source **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Requester_Optional_Messages_Type (ODR o, ILL_Requester_Optional_Messages_Type **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_bool,
			&(*p)->can_send_RECEIVED, ODR_CONTEXT, 0, 0, "can_send_RECEIVED") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->can_send_RETURNED, ODR_CONTEXT, 1, 0, "can_send_RETURNED") &&
		odr_implicit_tag (o, odr_enum,
			&(*p)->requester_SHIPPED, ODR_CONTEXT, 2, 0, "requester_SHIPPED") &&
		odr_implicit_tag (o, odr_enum,
			&(*p)->requester_CHECKED_IN, ODR_CONTEXT, 3, 0, "requester_CHECKED_IN") &&
		odr_sequence_end (o);
}

int ill_Responder_Optional_Messages_Type (ODR o, ILL_Responder_Optional_Messages_Type **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_bool,
			&(*p)->can_send_SHIPPED, ODR_CONTEXT, 0, 0, "can_send_SHIPPED") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->can_send_CHECKED_IN, ODR_CONTEXT, 1, 0, "can_send_CHECKED_IN") &&
		odr_implicit_tag (o, odr_enum,
			&(*p)->responder_RECEIVED, ODR_CONTEXT, 2, 0, "responder_RECEIVED") &&
		odr_implicit_tag (o, odr_enum,
			&(*p)->responder_RETURNED, ODR_CONTEXT, 3, 0, "responder_RETURNED") &&
		odr_sequence_end (o);
}

int ill_Retry_Results (ODR o, ILL_Retry_Results **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_enum,
			&(*p)->reason_not_available, ODR_CONTEXT, 0, 1, "reason_not_available") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->retry_date, ODR_CONTEXT, 1, 1, "retry_date") &&
		odr_implicit_settag (o, ODR_CONTEXT, 2) &&
		(odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
		  &(*p)->num_locations, "locations") || odr_ok(o)) &&
		odr_sequence_end (o);
}

int ill_Search_Type (ODR o, ILL_Search_Type **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_String,
			&(*p)->level_of_service, ODR_CONTEXT, 0, 1, "level_of_service") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->need_before_date, ODR_CONTEXT, 1, 1, "need_before_date") &&
		odr_implicit_tag (o, odr_enum,
			&(*p)->expiry_flag, ODR_CONTEXT, 2, 0, "expiry_flag") &&
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->expiry_date, ODR_CONTEXT, 3, 1, "expiry_date") &&
		odr_sequence_end (o);
}

int ill_Security_Problem (ODR o, ILL_Security_Problem **p, int opt, const char *name)
{
	return ill_String (o, p, opt, name);
}

int ill_Send_To_List_Type_s (ODR o, ILL_Send_To_List_Type_s **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->system_id, ODR_CONTEXT, 0, 0, "system_id") &&
		odr_explicit_tag (o, ill_Account_Number,
			&(*p)->account_number, ODR_CONTEXT, 1, 1, "account_number") &&
		odr_implicit_tag (o, ill_System_Address,
			&(*p)->system_address, ODR_CONTEXT, 2, 1, "system_address") &&
		odr_sequence_end (o);
}

int ill_Send_To_List_Type (ODR o, ILL_Send_To_List_Type **p, int opt, const char *name)
{
	if (!odr_initmember (o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_sequence_of (o, (Odr_fun) ill_Send_To_List_Type_s, &(*p)->elements,
		&(*p)->num, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Service_Date_this (ODR o, ILL_Service_Date_this **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date, ODR_CONTEXT, 0, 0, "date") &&
		odr_implicit_tag (o, ill_ISO_Time,
			&(*p)->time, ODR_CONTEXT, 1, 1, "time") &&
		odr_sequence_end (o);
}

int ill_Service_Date_original (ODR o, ILL_Service_Date_original **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date, ODR_CONTEXT, 0, 0, "date") &&
		odr_implicit_tag (o, ill_ISO_Time,
			&(*p)->time, ODR_CONTEXT, 1, 1, "time") &&
		odr_sequence_end (o);
}

int ill_Service_Date_Time (ODR o, ILL_Service_Date_Time **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_Service_Date_this,
			&(*p)->date_time_of_this_service, ODR_CONTEXT, 0, 0, "date_time_of_this_service") &&
		odr_implicit_tag (o, ill_Service_Date_original,
			&(*p)->date_time_of_original_service, ODR_CONTEXT, 1, 1, "date_time_of_original_service") &&
		odr_sequence_end (o);
}

int ill_Shipped_Service_Type (ODR o, ILL_Shipped_Service_Type **p, int opt, const char *name)
{
	return ill_Service_Type (o, p, opt, name);
}

int ill_State_Transition_Prohibited (ODR o, ILL_State_Transition_Prohibited **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_APDU_Type,
			&(*p)->aPDU_type, ODR_CONTEXT, 0, 0, "aPDU_type") &&
		odr_implicit_tag (o, ill_Current_State,
			&(*p)->current_state, ODR_CONTEXT, 1, 0, "current_state") &&
		odr_sequence_end (o);
}

int ill_Status_Report (ODR o, ILL_Status_Report **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_History_Report,
			&(*p)->user_status_report, ODR_CONTEXT, 0, 0, "user_status_report") &&
		odr_implicit_tag (o, ill_Current_State,
			&(*p)->provider_status_report, ODR_CONTEXT, 1, 0, "provider_status_report") &&
		odr_sequence_end (o);
}

int ill_Supplemental_Item_Description (ODR o, ILL_Supplemental_Item_Description **p, int opt, const char *name)
{
	if (!odr_initmember (o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_sequence_of (o, (Odr_fun) odr_external, &(*p)->elements,
		&(*p)->num, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Supply_Details (ODR o, ILL_Supply_Details **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_EXPLICIT, ODR_CONTEXT, 5, ILL_Supply_Details_physical_delivery,
		(Odr_fun) ill_Transportation_Mode, "physical_delivery"},
		{ODR_IMPLICIT, ODR_CONTEXT, 50, ILL_Supply_Details_electronic_delivery,
		(Odr_fun) ill_Electronic_Delivery_Service, "electronic_delivery"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_ISO_Date,
			&(*p)->date_shipped, ODR_CONTEXT, 0, 1, "date_shipped") &&
		odr_implicit_tag (o, ill_Date_Due,
			&(*p)->date_due, ODR_CONTEXT, 1, 1, "date_due") &&
		odr_implicit_tag (o, odr_integer,
			&(*p)->chargeable_units, ODR_CONTEXT, 2, 1, "chargeable_units") &&
		odr_implicit_tag (o, ill_Amount,
			&(*p)->cost, ODR_CONTEXT, 3, 1, "cost") &&
		odr_implicit_tag (o, odr_enum,
			&(*p)->shipped_conditions, ODR_CONTEXT, 4, 1, "shipped_conditions") &&
		(odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) || odr_ok(o)) &&
		odr_implicit_tag (o, ill_Amount,
			&(*p)->insured_for, ODR_CONTEXT, 6, 1, "insured_for") &&
		odr_implicit_tag (o, ill_Amount,
			&(*p)->return_insurance_require, ODR_CONTEXT, 7, 1, "return_insurance_require") &&
		odr_implicit_settag (o, ODR_CONTEXT, 8) &&
		(odr_sequence_of(o, (Odr_fun) ill_Units_Per_Medium_Type, &(*p)->no_of_units_per_medium,
		  &(*p)->num_no_of_units_per_medium, "no_of_units_per_medium") || odr_ok(o)) &&
		odr_sequence_end (o);
}

int ill_Supply_Medium_Info_Type (ODR o, ILL_Supply_Medium_Info_Type **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_Supply_Medium_Type,
			&(*p)->supply_medium_type, ODR_CONTEXT, 0, 0, "supply_medium_type") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->medium_characteristics, ODR_CONTEXT, 1, 1, "medium_characteristics") &&
		odr_sequence_end (o);
}

int ill_Supply_Medium_Type (ODR o, ILL_Supply_Medium_Type **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_System_Address (ODR o, ILL_System_Address **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_String,
			&(*p)->telecom_service_identifier, ODR_CONTEXT, 0, 1, "telecom_service_identifier") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->telecom_service_address, ODR_CONTEXT, 1, 1, "telecom_service_address") &&
		odr_sequence_end (o);
}

int ill_System_Id (ODR o, ILL_System_Id **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_Person_Or_Institution_Symbol,
			&(*p)->person_or_institution_symbol, ODR_CONTEXT, 0, 1, "person_or_institution_symbol") &&
		odr_explicit_tag (o, ill_Name_Of_Person_Or_Institution,
			&(*p)->name_of_person_or_institution, ODR_CONTEXT, 1, 1, "name_of_person_or_institution") &&
		odr_sequence_end (o);
}

int ill_Third_Party_Info_Type (ODR o, ILL_Third_Party_Info_Type **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, odr_bool,
			&(*p)->permission_to_forward, ODR_CONTEXT, 0, 0, "permission_to_forward") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->permission_to_chain, ODR_CONTEXT, 1, 0, "permission_to_chain") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->permission_to_partition, ODR_CONTEXT, 2, 0, "permission_to_partition") &&
		odr_implicit_tag (o, odr_bool,
			&(*p)->permission_to_change_send_to_list, ODR_CONTEXT, 3, 0, "permission_to_change_send_to_list") &&
		odr_implicit_tag (o, ill_System_Address,
			&(*p)->initial_requester_address, ODR_CONTEXT, 4, 1, "initial_requester_address") &&
		odr_implicit_tag (o, odr_enum,
			&(*p)->preference, ODR_CONTEXT, 5, 0, "preference") &&
		odr_implicit_tag (o, ill_Send_To_List_Type,
			&(*p)->send_to_list, ODR_CONTEXT, 6, 1, "send_to_list") &&
		odr_implicit_tag (o, ill_Already_Tried_List_Type,
			&(*p)->already_tried_list, ODR_CONTEXT, 7, 1, "already_tried_list") &&
		odr_sequence_end (o);
}

int ill_Transaction_Id (ODR o, ILL_Transaction_Id **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_System_Id,
			&(*p)->initial_requester_id, ODR_CONTEXT, 0, 1, "initial_requester_id") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->transaction_group_qualifier, ODR_CONTEXT, 1, 0, "transaction_group_qualifier") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->transaction_qualifier, ODR_CONTEXT, 2, 0, "transaction_qualifier") &&
		odr_explicit_tag (o, ill_String,
			&(*p)->sub_transaction_qualifier, ODR_CONTEXT, 3, 1, "sub_transaction_qualifier") &&
		odr_sequence_end (o);
}

int ill_Transaction_Id_Problem (ODR o, ILL_Transaction_Id_Problem **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Transaction_Results (ODR o, ILL_Transaction_Results **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Transaction_Type (ODR o, ILL_Transaction_Type **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Transportation_Mode (ODR o, ILL_Transportation_Mode **p, int opt, const char *name)
{
	return ill_String (o, p, opt, name);
}

int ill_Unable_To_Perform (ODR o, ILL_Unable_To_Perform **p, int opt, const char *name)
{
	return odr_enum (o, p, opt, name);
}

int ill_Unfilled_Results (ODR o, ILL_Unfilled_Results **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_implicit_tag (o, ill_Reason_Unfilled,
			&(*p)->reason_unfilled, ODR_CONTEXT, 0, 0, "reason_unfilled") &&
		odr_implicit_settag (o, ODR_CONTEXT, 1) &&
		(odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
		  &(*p)->num_locations, "locations") || odr_ok(o)) &&
		odr_sequence_end (o);
}

int ill_Units_Per_Medium_Type (ODR o, ILL_Units_Per_Medium_Type **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, ill_Supply_Medium_Type,
			&(*p)->medium, ODR_CONTEXT, 0, 0, "medium") &&
		odr_explicit_tag (o, odr_integer,
			&(*p)->no_of_units, ODR_CONTEXT, 1, 0, "no_of_units") &&
		odr_sequence_end (o);
}

int ill_User_Error_Report (ODR o, ILL_User_Error_Report **p, int opt, const char *name)
{
	static Odr_arm arm[] = {
		{ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_User_Error_Report_already_forwarded,
		(Odr_fun) ill_Already_Forwarded, "already_forwarded"},
		{ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_User_Error_Report_intermediary_problem,
		(Odr_fun) ill_Intermediary_Problem, "intermediary_problem"},
		{ODR_EXPLICIT, ODR_CONTEXT, 2, ILL_User_Error_Report_security_problem,
		(Odr_fun) ill_Security_Problem, "security_problem"},
		{ODR_IMPLICIT, ODR_CONTEXT, 3, ILL_User_Error_Report_unable_to_perform,
		(Odr_fun) ill_Unable_To_Perform, "unable_to_perform"},
		{-1, -1, -1, -1, (Odr_fun) 0, 0}
	};
	if (!odr_initmember(o, p, sizeof(**p)))
		return odr_missing(o, opt, name);
	if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
		return 1;
	*p = 0;
	return odr_missing(o, opt, name);
}

int ill_Will_Supply_Results (ODR o, ILL_Will_Supply_Results **p, int opt, const char *name)
{
	if (!odr_sequence_begin (o, p, sizeof(**p), name))
		return odr_missing(o, opt, name) && odr_ok (o);
	return
		odr_explicit_tag (o, odr_enum,
			&(*p)->reason_will_supply, ODR_CONTEXT, 0, 0, "reason_will_supply") &&
		odr_explicit_tag (o, ill_ISO_Date,
			&(*p)->supply_date, ODR_CONTEXT, 1, 1, "supply_date") &&
		odr_explicit_tag (o, ill_Postal_Address,
			&(*p)->return_to_address, ODR_CONTEXT, 2, 1, "return_to_address") &&
		odr_implicit_settag (o, ODR_CONTEXT, 3) &&
		(odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
		  &(*p)->num_locations, "locations") || odr_ok(o)) &&
		odr_explicit_tag (o, ill_Electronic_Delivery_Service,
			&(*p)->electronic_delivery_service, ODR_CONTEXT, 4, 1, "electronic_delivery_service") &&
		odr_sequence_end (o);
}

int ill_EDIFACTString (ODR o, ILL_EDIFACTString **p, int opt, const char *name)
{
	return odr_visiblestring (o, p, opt, name);
}


