Skip to content
Snippets Groups Projects
OneM2M_Types.ttcn 165.88 KiB
/**
 *  Copyright Notification
 *  No part of this document may be reproduced, in an electronic retrieval system or otherwise, except as authorized by written permission.
 *  The copyright and the foregoing restriction extend to reproduction in all media.
 *  © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC).
 *  All rights reserved.
 *  
 *  @author     ETSI
 *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/branches/Release1/ttcn/LibOneM2M/OneM2M_Types.ttcn $
 *              $Id: OneM2M_Types.ttcn 347 2017-08-11 08:48:20Z reinaortega $
 *  @desc       Test System module for oneM2M
 *
 */
module OneM2M_Types {


	import from XSD all;


	type record AccessControlPolicy
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,//TODO To be put as optional
		SetOfAcrs privileges,
		SetOfAcrs selfPrivileges,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record AccessControlPolicyAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime,
		XSD.AnyURI link,
		SetOfAcrs privileges,
		SetOfAcrs selfPrivileges,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record SetOfAcrs
	{
		record of AccessControlRule accessControlRule_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (accessControlRule_list) "untagged";
	  variant (accessControlRule_list[-]) "name as 'accessControlRule'";
	};


	type record AccessControlRule
	{
		ListOfURIs accessControlOriginators,
		AccessControlOperations accessControlOperations,
		record of record {
			record of ScheduleEntry accessControlWindow_list,
			record {
				record length(1 .. infinity) of Ipv4 ipv4Addresses optional,//TODO It must be optional,
				record length(1 .. infinity) of Ipv6 ipv6Addresses optional//TODO It must be optional
			} accessControlIpAddresses optional,
			LocationRegion accessControlLocationRegion optional
		} accessControlContexts_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (accessControlContexts_list) "untagged";
	  variant (accessControlContexts_list[-]) "name as 'accessControlContexts'";
	  variant (accessControlContexts_list[-].accessControlWindow_list) "untagged";
	  variant (accessControlContexts_list[-].accessControlWindow_list[-]) "name as 'accessControlWindow'";
	  variant (accessControlContexts_list[-].accessControlIpAddresses.ipv4Addresses) "list";
	  variant (accessControlContexts_list[-].accessControlIpAddresses.ipv6Addresses) "list";
	};


	type record LocationRegion
	{
		union {
			record length(1 .. infinity) of CountryCode countryCode,
			record length(3) of XSD.Float circRegion
		} choice
	}
	with {
	  variant "name as uncapitalized";
	  variant (choice) "untagged";
	  variant (choice.countryCode) "list";
	  variant (choice.circRegion) "list";
	};




	type XSD.String CountryCode (pattern "[A-Z]#(2)")
	with {
	  variant "name as uncapitalized";
	};




	type XSD.Token Ipv4 (pattern "([0-9A-Fa-f]#(8)(/([0-9]|[1-2][0-9]|3[0-2]))#(0,1))" & "|" & 
								"((25[0-5]|2[0-4][0-9]|[0-1]#(0,1)[0-9]#(0,1)[0-9])\.(25[0-5]|2[0-4][0-9]|[0-1]#(0,1)[0-9]#(0,1)[0-9])\.(25[0-5]|2[0-4][0-9]|[0-1]#(0,1)[0-9]#(0,1)[0-9])\.(25[0-5]|2[0-4][0-9]|[0-1]#(0,1)[0-9]#(0,1)[0-9])(/([0-9]|[1-2][0-9]|3[0-2]))#(0,1))")
	with {
	  variant "name as uncapitalized";
	};


	type XSD.Token Ipv6 (pattern "([0-9A-Fa-f]#(1,4)(:[0-9A-Fa-f]#(1,4))#7(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))#(0,1))" & "|" &
	"(:(:[0-9A-Fa-f]#(1,4))#(1,7))" & "|" & //Double colon start
	"(([0-9A-Fa-f]#(1,4):)#(1,6)(:[0-9A-Fa-f]#(1,4))#1(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))#(0,1))" & "|" & //Double colon middle
	"(([0-9A-Fa-f]#(1,4):)#(1,5)(:[0-9A-Fa-f]#(1,4))#(1,2)(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))#(0,1))" & "|" &
	"(([0-9A-Fa-f]#(1,4):)#(1,4)(:[0-9A-Fa-f]#(1,4))#(1,3)(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))#(0,1))" & "|" &
	"(([0-9A-Fa-f]#(1,4):)#(1,3)(:[0-9A-Fa-f]#(1,4))#(1,4)(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))#(0,1))" & "|" &
	"(([0-9A-Fa-f]#(1,4):)#(1,2)(:[0-9A-Fa-f]#(1,4))#(1,5)(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))#(0,1))" & "|" &
	"(([0-9A-Fa-f]#(1,4):)#1(:[0-9A-Fa-f]#(1,4))#(1,6)(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))#(0,1))" & "|" &
	"(([0-9A-Fa-f]#(1,4):)#(1,7):(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))#(0,1))" & "|" & //Double colon end
	"(((:(:0#(1,4))#(0,3)(:(0#(1,4)|[fF]#4))#(0,1))|(0#(1,4):(:0#(1,4))#(0,2)(:(0#(1,4)|[fF]#4))#(0,1))|((0#(1,4):)#2(:0#(1,4))#(0,1)(:(0#(1,4)|[fF]#4))#(0,1))|((0#(1,4):)#3(:(0#(1,4)|[fF]#4))#(0,1))|((0#(1,4):)#4(0#(1,4)|[fF]#4)#(0,1))):(25[0-5]|2[0-4][0-9]|[0-1]#(0,1)[0-9]#(0,1)[0-9])\.(25[0-5]|2[0-4][0-9]|[0-1]#(0,1)[0-9]#(0,1)[0-9])\.(25[0-5]|2[0-4][0-9]|[0-1]#(0,1)[0-9]#(0,1)[0-9])\.(25[0-5]|2[0-4][0-9]|[0-1]#(0,1)[0-9]#(0,1)[0-9]))" & "|" & //Embedded IPv4 addresses without CIDR suffix. Should IPv4 CIDR suffix be added
	"(::(/0)#(0,1))") //The unspecified address
	
	with {
	  variant "name as uncapitalized";
	};


	type record ActiveCmdhPolicy
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,//TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.ID activeCmdhPolicyLink
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};


	type record AE
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,//TODO To be put as optional
		XSD.String appName optional,
		XSD.String app_ID,
		XSD.ID aE_ID,
		PoaList pointOfAccess optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean requestReachability,
		Serializations contentSerialization optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Container container,
				Group group_,
				AccessControlPolicy accessControlPolicy,
				Subscription subscription,
				PollingChannel pollingChannel,
				Schedule schedule
			} choice_list
		} choice optional
	}
	with {
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (app_ID) "name as 'App-ID'";
	  variant (aE_ID) "name as 'AE-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	};


	type record AEAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		XSD.String appName optional,
		XSD.String app_ID optional,
		XSD.ID aE_ID optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean requestReachability optional,
		Serializations contentSerialization optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Container container,
				ContainerAnnc containerAnnc,
				Group group_,
				GroupAnnc groupAnnc,
				AccessControlPolicy accessControlPolicy,
				AccessControlPolicyAnnc accessControlPolicyAnnc,
				Subscription subscription,
				ScheduleAnnc scheduleAnnc
			} choice_list
		} choice optional
	}
	with {
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (app_ID) "name as 'App-ID'";
	  variant (aE_ID) "name as 'AE-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	};


	type record AreaNwkDeviceInfo
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,//TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String devID,
		XSD.String devType,
		XSD.AnyURI areaNwkId,
		XSD.NonNegativeInteger sleepInterval optional,
		XSD.NonNegativeInteger sleepDuration optional,
		XSD.String devStatus optional,
		ListOfURIs listOfNeighbors,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record AreaNwkDeviceInfoAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String devID optional,
		XSD.String devType optional,
		XSD.AnyURI areaNwkId optional,
		XSD.NonNegativeInteger sleepInterval optional,
		XSD.NonNegativeInteger sleepDuration optional,
		XSD.String devStatus optional,
		ListOfURIs listOfNeighbors optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record AreaNwkInfo
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,//TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String areaNwkType,
		ListOfURIs listOfDevices,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record AreaNwkInfoAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String areaNwkType optional,
		ListOfURIs listOfDevices optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record Battery
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.UnsignedInt batteryLevel,
		BatteryStatus batteryStatus,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record BatteryAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.UnsignedInt batteryLevel optional,
		BatteryStatus batteryStatus optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record CmdhBuffer
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		ListOfEventCatWithDef applicableEventCategory,
		XSD.NonNegativeInteger maxBufferSize,
		XSD.PositiveInteger storagePriority (1 .. !11)
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};


	type record CmdhDefaults
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		record length(2 .. infinity) of MgmtLinkRef mgmtLink_list
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (mgmtLink_list) "untagged";
	  variant (mgmtLink_list[-]) "name as 'mgmtLink'";
	};


	type record CmdhDefEcValue
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.PositiveInteger order,
		EventCat defEcValue,
		ListOfM2MID requestOrigin,
		XSD.AnySimpleType requestContext optional,//FIXME Use AnySimpleType instead
		XSD.Boolean requestContextNotification optional,
		XSD.AnySimpleType requestCharacteristics optional//FIXME Use AnySimpleType instead
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (requestContextNotification) "text 'true' as '1'";
	  //variant (requestContextNotification) "text 'false' as '0'";
	};


	type record CmdhEcDefParamValues
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		ListOfEventCatWithDef applicableEventCategory,
		XSD.Long defaultRequestExpTime,
		XSD.Long defaultResultExpTime,
		XSD.Long defaultOpExecTime,
		XSD.Long defaultRespPersistence,
		XSD.Boolean defaultDelAggregation
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (defaultDelAggregation) "text 'true' as '1'";
	  //variant (defaultDelAggregation) "text 'false' as '0'";
	};


	type record CmdhLimits
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.PositiveInteger order,
		ListOfM2MID requestOrigin,
		XSD.AnySimpleType requestContext,//FIXME Use AnySimpleType instead
		XSD.Boolean requestContextNotification optional,
		XSD.AnySimpleType requestCharacteristics,//FIXME Use AnySimpleType instead
		ListOfEventCat limitsEventCategory,
		ListOfMinMax limitsRequestExpTime,
		ListOfMinMax limitsResultExpTime,
		ListOfMinMax limitsOpExecTime,
		ListOfMinMax limitsRespPersistence,
		enumerated {
			x0,
			x1,
			x0_1
		} limitsDelAggregation
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (requestContextNotification) "text 'true' as '1'";
	  //variant (requestContextNotification) "text 'false' as '0'";
	  variant (limitsDelAggregation) "text 'x0' as '0'";
	  variant (limitsDelAggregation) "text 'x0_1' as '0 1'";
	  variant (limitsDelAggregation) "text 'x1' as '1'";
	};


	type record CmdhNetworkAccessRules
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		ListOfEventCatWithDef applicableEventCategories,
		record of MgmtLinkRef mgmtLink_list
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (mgmtLink_list) "untagged";
	  variant (mgmtLink_list[-]) "name as 'mgmtLink'";
	};


	type record CmdhNwAccessRule
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		ListOfM2MID targetNetwork,
		XSD.NonNegativeInteger minReqVolume,
		BackOffParameters backOffParameters,
		XSD.AnySimpleType otherConditions,//FIXME Use AnySimpleType instead
		MgmtLinkRef mgmtLink
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};


	type record CmdhPolicy
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String cmdhPolicyName,
		record length(4 .. infinity) of MgmtLinkRef mgmtLink_list
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (mgmtLink_list) "untagged";
	  variant (mgmtLink_list[-]) "name as 'mgmtLink'";
	};








	type XSD.AnyURI ID;


	type XSD.Token NodeID
	with {
	  variant "name as uncapitalized";
	};


	type XSD.Token DeviceID (pattern 	"(urn:dev:ops:[\dABCDEFabcdef]#6-[\w_%]#(1,)-[\w_%]#(1,))" & "|" &
										"(urn:dev:os:[\dABCDEFabcdef]#6-[\w_%]#(1,))" & "|" &
										"(urn:imei:\d#15)" & "|" &
										"(urn:esn:[\dABCDEFabcdef]#8)" & "|" &
										"(urn:meid:[\dABCDEFabcdef]#14)")
	with {
	  variant "name as uncapitalized";
	};


	type XSD.Token ExternalID
	with {
	  variant "name as uncapitalized";
	};


	type XSD.Token RequestID
	with {
	  variant "name as uncapitalized";
	};


	type XSD.AnyURI NhURI
	with {
	  variant "name as uncapitalized";
	};


	type record length(1 .. infinity) of XSD.ID AcpType
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};


	type record length(1 .. infinity) of XSD.Token Labels
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};


	type XSD.UnsignedInt TriggerRecipientID (0 .. 65535)
	with {
	  variant "name as uncapitalized";
	};




	type record length(1 .. infinity) of XSD.ID ListOfM2MID
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};




	type XSD.Long LongMin_1 (-1 .. infinity)
	with {
	  variant "name as 'longMin-1'";
	};




	type record length(2) of LongMin_1 ListOfMinMax
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};




	type record length(3) of XSD.NonNegativeInteger BackOffParameters
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};




	type record length(1 .. infinity) of XSD.String PoaList
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};




	type XSD.String Timestamp (pattern "\d#(4)(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|30|31)T([01]\d|2[0-3])[0-5]\d[0-5]\d(,\d#(1,6))#(0,1)")
	with {
	  variant "name as uncapitalized";
	};


	type union AbsRelTimestamp
	{
		Timestamp alt_,
		XSD.Long alt_1
	}
	with {
	  variant "name as uncapitalized";
	  variant "useUnion";
	  variant (alt_) "name as ''";
	  variant (alt_1) "name as ''";
	};


	type XSD.String TypeOfContent (pattern "[\w/!#$\^_.+\q{0, 0, 0, 38}&\-]+")
	with {
	  variant "name as uncapitalized";
	};




	type enumerated PermittedMediaTypes
	{
		applicationjson,
		applicationxml
	}
	with {
	  variant "text 'applicationjson' as 'application/json'";
	  variant "text 'applicationxml' as 'application/xml'";
	  variant "name as uncapitalized";
	};




	type record length(1 .. infinity) of PermittedMediaTypes Serializations
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};


	type XSD.String ContentInfo //TODO To be fixed (pattern "([\w/!#$^_.#(1,)&\-]#(1,)(:[0-2])#(0,1))" & "|" &
								//							"([\w/!#$^_.#(1,)&\-]#(1,)((:[0-2])#(0,1))#(1,)((:[0-5])#(0,1)))")
	
	with {
	  variant "name as uncapitalized";
	};


	type union EventCat
	{
		StdEventCats alt_,
		XSD.Integer alt_1 (100 .. 999)
	}
	with {
	  variant "name as uncapitalized";
	  variant "useUnion";
	  variant (alt_) "name as ''";
	  variant (alt_1) "name as ''";
	};


	type union EventCatWithDef
	{
		enumerated {
			int0(0)
		} alt_,
		StdEventCats alt_1,
		XSD.Integer alt_2 (100 .. 999)
	}
	with {
	  variant "name as uncapitalized";
	  variant "useUnion";
	  variant (alt_) "name as ''";
	  variant (alt_) "useNumber";
	  variant (alt_1) "name as ''";
	  variant (alt_2) "name as 'alt_1'";
	  variant (alt_2) "name as ''";
	};


	type record length(1 .. infinity) of EventCat ListOfEventCat
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};


	type record length(1 .. infinity) of EventCatWithDef ListOfEventCatWithDef
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};


	type XSD.String ScheduleEntry (pattern "(((([*]|(([1-5]#(0,1)\d)\-([1-5]#(0,1)\d)))(\/([1-5]#(0,1)\d))#(0,1)|([1-5]#(0,1)\d))\,)#(0,)((([*]|(([1-5]#(0,1)\d)\-([1-5]#(0,1)\d)))(\/([1-5]#(0,1)\d))#(0,1))|([1-5]#(0,1)\d))[\q{0,0,0,32}\q{0,0,0,10}\t\r]#(1,))#2((([*]|((1#(0,1)\d|2[0-3])\-(1#(0,1)\d|2[0-3])))(\/1#(0,1)\d|2[0-3])#(0,1)|(1#(0,1)\d|2[0-3]))\,)#(0,)((([*]|((1#(0,1)\d|2[0-3])\-(1#(0,1)\d|2[0-3])))(\/1#(0,1)\d|2[0-3])#(0,1))|(1#(0,1)\d|2[0-3]))[\q{0,0,0,32}\q{0,0,0,10}\t\r]#(1,)((([*]|(([1-9]|1\d|2\d|3[01])\-([1-9]|1\d|2\d|3[01])))(\/[1-9]|1\d|2\d|3[01])#(0,1)|([1-9]|1\d|2\d|3[01]))\,)#(0,)((([*]|(([1-9]|1\d|2\d|3[01])\-([1-9]|1\d|2\d|3[01])))(\/[1-9]|1\d|2\d|3[01])#(0,1))|([1-9]|1\d|2\d|3[01]))[\q{0,0,0,32}\q{0,0,0,10}\t\r]#(1,)((([*]|(([1-9]|1[0-2])\-([1-9]|1[0-2])))(\/[1-9]|1[0-2])#(0,1)|([1-9]|1[0-2]))\,)#(0,)((([*]|(([1-9]|1[0-2])\-([1-9]|1[0-2])))(\/[1-9]|1[0-2])#(0,1))|([1-9]|1[0-2]))[\q{0,0,0,32}\q{0,0,0,10}\t\r]#(1,)((([*]|(([0-6])\-([0-6])))(\/[0-6])#(0,1)|([0-6]))\,)#(0,)((([*]|(([0-6])\-([0-6])))(\/[0-6])#(0,1))|([0-6]))")
	with {
	  variant "name as uncapitalized";
	};


	type record length(1 .. infinity) of XSD.AnyURI ListOfURIs
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};


	type record of XSD.NCName AttributeList_1
	with {
	  variant "name as 'attributeList'";
	  variant "list";
	};


	type record length(1 .. infinity) of ResourceType ResourceTypeList
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};


	type XSD.String ResourceName (pattern "[a-zA-Z0-9]([a-zA-Z0-9.\-,_]#(0,))")
	with {
	  variant "name as uncapitalized";
	};








	type record DeliveryMetaData
	{
		XSD.Boolean tracingOption,
		ListOfM2MID tracingInfo optional
	}
	with {
	  variant "name as uncapitalized";
	  //variant (tracingOption) "text 'true' as '1'";
	  //variant (tracingOption) "text 'false' as '0'";
	};


	type record AggregatedRequest
	{
		record length(1 .. infinity) of record {
			Operation operation,
			XSD.AnyURI to_,
			XSD.ID from_,
			RequestID requestIdentifier,
			PrimitiveContent primitiveContent optional,
			MetaInformation metaInformation optional
		} request_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (request_list) "untagged";
	  variant (request_list[-]) "name as 'request'";
	  variant (request_list[-].to_) "name as 'to'";
	  variant (request_list[-].from_) "name as 'from'";
	};


	type record MetaInformation
	{
		ResourceType resourceType optional,
		XSD.NCName name optional,
		Timestamp originatingTimestamp optional,
		AbsRelTimestamp requestExpirationTimestamp optional,
		AbsRelTimestamp resultExpirationTimestamp optional,
		AbsRelTimestamp operationExecutionTime optional,
		ResponseTypeInfo responseType optional,
		AbsRelTimestamp resultPersistence optional,
		ResultContent resultContent optional,
		EventCat eventCategory optional,
		XSD.Boolean deliveryAggregation optional,
		XSD.String groupRequestIdentifier optional,
		FilterCriteria filterCriteria optional,
		DiscResType discoveryResultType optional
	}
	with {
	  variant "name as uncapitalized";
	  //variant (deliveryAggregation) "text 'true' as '1'";
	  //variant (deliveryAggregation) "text 'false' as '0'";
	};


//TODO Use this type instead type record PrimitiveContent
  type union PrimitiveContent {
	  //TS-0004 - 7.5.2-1 & 7.5.2-2 Common elements to request/response content
	  //ResourceTypes
	  AEAnnc_optional aEAnnc,
	  AE_optional aE,
	  AccessControlPolicy_optional accessControlPolicy,
	  AccessControlPolicyAnnc_optional accessControlPolicyAnnc,
	  ContentInstance_optional contentInstance,
	  ContentInstanceAnnc_optional contentInstanceAnnc,
	  Container_optional container,
	  ContainerAnnc_optional containerAnnc,
	  Delivery_optional delivery,
	  CSEBase_optional cSEBase,
	  Group_optional group_,
	  GroupAnnc_optional groupAnnc,
	  LocationPolicy_optional locationPolicy,
	  LocationPolicyAnnc_optional locationPolicyAnnc,
	  MgmtResource_optional mgmtResource,//MgmtResource
	  MgmtCmd_optional mgmtCmd,
	  AnnouncedMgmtResource_optional announcedMgmtResource,//AnnouncedMgmtResource
	  Node_optional node,
	  NodeAnnc_optional nodeAnnc,
	  PollingChannel_optional pollingChannel,
	  Request_optional request, 
	  RemoteCSE_optional remoteCSE,
	  Schedule_optional schedule,
	  ScheduleAnnc_optional scheduleAnnc,
	  StatsConfig_optional statsConfig,
	  StatsCollect_optional statsCollect,
	  M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile,
	  ServiceSubscribedAppRule_optional serviceSubscribedAppRule,
	  Subscription_optional subscription,
	  //SecurityInfo
	  //TS-0004 - 7.5.2-1 Elements used for request content
	  Notification notification,
	  AggregatedNotification aggregatedNotification,
	  AttributeList attributeList,
	  ResponsePrimitive responsePrimitive,
	  //TS-0004 - 7.5.2-2 Elements used for response content
	  Resource resource,
	  URIList uRIList,
	  AggregatedResponse aggregatedResponse,
	  URI uRI,
	  DebugInfo debugInfo,
	  //Invalid types
	  AE_update_invalid aE_update_invalid,
	  ACP_update_invalid aCP_update_invalid,
	  Container_update_invalid container_update_invalid,
	  Group_update_invalid group_update_invalid,
	  PollingChannel_update_invalid pollingChannel_update_invalid,
	  Schedule_update_invalid schedule_update_invalid,
	  Subscription_update_invalid subscription_update_invalid,
	  LocationPolicy_update_invalid locationPolicy_update_invalid	
  }




	type record FilterCriteria
	{
		Timestamp createdBefore optional,
		Timestamp createdAfter optional,
		Timestamp modifiedSince optional,
		Timestamp unmodifiedSince optional,
		XSD.PositiveInteger stateTagSmaller optional,
		XSD.NonNegativeInteger stateTagBigger optional,
		Timestamp expireBefore optional,
		Timestamp expireAfter optional,
		Labels labels optional,
		ResourceTypeList resourceType optional,
		XSD.NonNegativeInteger sizeAbove optional,
		XSD.PositiveInteger sizeBelow optional,
		record of TypeOfContent contentType_list,
		record of Attribute attribute_list,
		FilterUsage filterUsage optional,
		XSD.NonNegativeInteger limit optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (contentType_list) "untagged";
	  variant (contentType_list[-]) "name as 'contentType'";
	  variant (attribute_list) "untagged";
	  variant (attribute_list[-]) "name as 'attribute'";
	};


	type record Attribute
	{
		XSD.NCName name,
		XSD.AnySimpleType value_//FIXME Use AnySimpleType instead
	}
	with {
	  variant "name as uncapitalized";
	  variant (value_) "name as 'value'";
	};


	type record ScheduleEntries
	{
		record length(1 .. infinity) of ScheduleEntry scheduleEntry_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (scheduleEntry_list) "untagged";
	  variant (scheduleEntry_list[-]) "name as 'scheduleEntry'";
	};






	type record ActionStatus
	{
		XSD.AnyURI action_ optional,
		Status status optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (action_) "name as 'action'";
	};


	type record AnyArgType
	{
		XSD.NCName name,
		XSD.AnySimpleType value_//FIXME Use AnySimpleType instead
	}
	with {
	  variant "name as uncapitalized";
	  variant (value_) "name as 'value'";
	};


	type record ResetArgsType
	{
		record of AnyArgType anyArg_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (anyArg_list) "untagged";
	  variant (anyArg_list[-]) "name as 'anyArg'";
	};


	type record RebootArgsType
	{
		record of AnyArgType anyArg_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (anyArg_list) "untagged";
	  variant (anyArg_list[-]) "name as 'anyArg'";
	};


	type record UploadArgsType
	{
		XSD.String fileType,
		XSD.AnyURI uRL,
		XSD.String username,
		XSD.String password,
		record of AnyArgType anyArg_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (uRL) "name as capitalized";
	  variant (anyArg_list) "untagged";
	  variant (anyArg_list[-]) "name as 'anyArg'";
	};


	type record DownloadArgsType
	{
		XSD.String fileType,
		XSD.AnyURI uRL,
		XSD.String username,
		XSD.String password,
		XSD.PositiveInteger filesize,
		XSD.String targetFile,
		XSD.PositiveInteger delaySeconds,
		XSD.AnyURI successURL,
		Timestamp startTime,
		Timestamp completeTime,
		record of AnyArgType anyArg_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (uRL) "name as capitalized";
	  variant (anyArg_list) "untagged";
	  variant (anyArg_list[-]) "name as 'anyArg'";
	};


	type record SoftwareInstallArgsType
	{
		XSD.AnyURI uRL,
		XSD.String uUID,
		XSD.String username,
		XSD.String password,
		XSD.String executionEnvRef,
		record of AnyArgType anyArg_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (uRL) "name as capitalized";
	  variant (uUID) "name as capitalized";
	  variant (anyArg_list) "untagged";
	  variant (anyArg_list[-]) "name as 'anyArg'";
	};


	type record SoftwareUpdateArgsType
	{
		XSD.String uUID,
		XSD.String version,
		XSD.AnyURI uRL,
		XSD.String username,
		XSD.String password,
		XSD.String executionEnvRef,
		record of AnyArgType anyArg_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (uUID) "name as capitalized";
	  variant (uRL) "name as capitalized";
	  variant (anyArg_list) "untagged";
	  variant (anyArg_list[-]) "name as 'anyArg'";
	};


	type record SoftwareUninstallArgsType
	{
		XSD.String uUID,
		XSD.String version,
		XSD.String executionEnvRef,
		record of AnyArgType anyArg_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (uUID) "name as capitalized";
	  variant (anyArg_list) "untagged";
	  variant (anyArg_list[-]) "name as 'anyArg'";
	};


	type record ExecReqArgsListType
	{
		union {
			record of ResetArgsType reset_list,
			record length(1 .. infinity) of RebootArgsType reboot_list,
			record length(1 .. infinity) of UploadArgsType upload_list,
			record length(1 .. infinity) of DownloadArgsType download_list,
			record length(1 .. infinity) of SoftwareInstallArgsType softwareInstall_list,
			record length(1 .. infinity) of SoftwareUpdateArgsType softwareUpdate_list,
			record length(1 .. infinity) of SoftwareUninstallArgsType softwareUninstall_list
		} choice
	}
	with {
	  variant "name as uncapitalized";
	  variant (choice) "untagged";
	  variant (choice.reset_list) "untagged";
	  variant (choice.reset_list[-]) "name as 'reset'";
	  variant (choice.reboot_list) "untagged";
	  variant (choice.reboot_list[-]) "name as 'reboot'";
	  variant (choice.upload_list) "untagged";
	  variant (choice.upload_list[-]) "name as 'upload'";
	  variant (choice.download_list) "untagged";
	  variant (choice.download_list[-]) "name as 'download'";
	  variant (choice.softwareInstall_list) "untagged";
	  variant (choice.softwareInstall_list[-]) "name as 'softwareInstall'";
	  variant (choice.softwareUpdate_list) "untagged";
	  variant (choice.softwareUpdate_list[-]) "name as 'softwareUpdate'";
	  variant (choice.softwareUninstall_list) "untagged";
	  variant (choice.softwareUninstall_list[-]) "name as 'softwareUninstall'";
	};


	type record MgmtLinkRef
	{
		ResourceName name,
		MgmtDefinition type_,
		XSD.AnyURI base
	}
	with {
	  variant "name as uncapitalized";
	  variant (name) "attribute";
	  variant (type_) "name as 'type'";
	  variant (type_) "attribute";
	  variant (base) "untagged";
	};






	type record ChildResourceRef
	{
		ResourceName name,
		ResourceType type_,
		XSD.AnyURI base
	}
	with {
	  variant "name as uncapitalized";
	  variant (name) "attribute";
	  variant (type_) "name as 'type'";
	  variant (type_) "attribute";
	  variant (base) "untagged";
	};


	type record ResponseTypeInfo
	{
		ResponseType responseTypeValue,
		record of XSD.AnyURI notificationURI
	}
	with {
	  variant "name as uncapitalized";
	  variant (notificationURI) "list";
	};




	type record OperationResult
	{
		ResponseStatusCode responseStatusCode,
		RequestID requestIdentifier,
		PrimitiveContent primitiveContent optional,
		XSD.AnyURI to_ optional,
		XSD.ID from_ optional,
		Timestamp originatingTimestamp optional,
		AbsRelTimestamp resultExpirationTimestamp optional,
		EventCat eventCategory optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (to_) "name as 'to'";
	  variant (from_) "name as 'from'";
	};






	type record Resource_1
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional
	}
	with {
	  variant "name as 'resource'";
	  variant (resourceName) "attribute";
	};


	type record RegularResource
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	};


	type record AnnounceableResource
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};


	type record AnnouncedResource
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	};


	type record AnnounceableSubordinateResource
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};


	type record SubordinateResource
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	};


	type record AnnouncedSubordinateResource
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime,
		XSD.AnyURI link
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	};


	type record MgmtResource
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};


	type record AnnouncedMgmtResource
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	};


	type record Container
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		XSD.NonNegativeInteger stateTag,
		XSD.ID creator,
		XSD.NonNegativeInteger maxNrOfInstances optional,
		XSD.NonNegativeInteger maxByteSize optional,
		XSD.NonNegativeInteger maxInstanceAge optional,
		XSD.NonNegativeInteger currentNrOfInstances,
		XSD.NonNegativeInteger currentByteSize,
		XSD.AnyURI locationID optional,
		XSD.AnyURI ontologyRef optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ContentInstance contentInstance,
				Container container,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record ContainerAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		XSD.NonNegativeInteger stateTag,
		XSD.NonNegativeInteger maxNrOfInstances optional,
		XSD.NonNegativeInteger maxByteSize optional,
		XSD.NonNegativeInteger maxInstanceAge optional,
		XSD.NonNegativeInteger currentNrOfInstances optional,
		XSD.NonNegativeInteger currentByteSize optional,
		XSD.AnyURI locationID optional,
		XSD.AnyURI ontologyRef optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ContentInstance contentInstance,
				ContentInstanceAnnc contentInstanceAnnc,
				Container container,
				ContainerAnnc containerAnnc,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record ContentInstance
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		XSD.NonNegativeInteger stateTag,
		XSD.ID creator optional,
		ContentInfo contentInfo optional,
		XSD.NonNegativeInteger contentSize,
		XSD.AnyURI ontologyRef optional,
		XSD.AnySimpleType content //FIXME Use AnySimpleType instead
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};


	type record ContentInstanceAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime,
		XSD.AnyURI link,
		XSD.NonNegativeInteger stateTag,
		ContentInfo contentInfo optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnySimpleType content optional //FIXME Use AnySimpleType instead
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};


	type record CSEBase
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		CseTypeID cseType optional,
		XSD.ID cSE_ID,
		ResourceTypeList_1 supportedResourceType optional,//TODO Remove inline type
		PoaList pointOfAccess,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				RemoteCSE remoteCSE,
				RemoteCSEAnnc remoteCSEAnnc,
				Node node,
				AE aE,
				Container container,
				Group group_,
				AccessControlPolicy accessControlPolicy,
				Subscription subscription,
				MgmtCmd mgmtCmd,
				LocationPolicy locationPolicy,
				StatsConfig statsConfig,
				StatsCollect statsCollect,
				Request request,
				Delivery delivery,
				Schedule schedule,
				M2mServiceSubscriptionProfile m2mServiceSubscriptionProfile,
				ServiceSubscribedAppRule serviceSubscribedAppRule
			} choice_list
		} choice optional
	}
	with {
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (cSE_ID) "name as 'CSE-ID'";
	  variant (supportedResourceType) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].aE) "name as capitalized";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	};


	type record Delivery
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		XSD.NonNegativeInteger stateTag,
		XSD.ID source,
		XSD.ID target,
		Timestamp lifespan,
		EventCat eventCat,
		DeliveryMetaData deliveryMetaData,
		AggregatedRequest aggregatedRequest,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record DeviceCapability
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String capabilityName,
		XSD.Boolean attached,
		ActionStatus capabilityActionStatus,
		XSD.Boolean currentState,
		XSD.Boolean enable optional,
		XSD.Boolean disable optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (attached) "text 'true' as '1'";
	  //variant (attached) "text 'false' as '0'";
	  //variant (currentState) "text 'true' as '1'";
	  //variant (currentState) "text 'false' as '0'";
	  //variant (enable) "text 'true' as '1'";
	  //variant (enable) "text 'false' as '0'";
	  //variant (disable) "text 'true' as '1'";
	  //variant (disable) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record DeviceCapabilityAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String capabilityName optional,
		XSD.Boolean attached optional,
		ActionStatus capabilityActionStatus optional,
		XSD.Boolean currentState optional,
		XSD.Boolean enable optional,
		XSD.Boolean disable optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (attached) "text 'true' as '1'";
	  //variant (attached) "text 'false' as '0'";
	  //variant (currentState) "text 'true' as '1'";
	  //variant (currentState) "text 'false' as '0'";
	  //variant (enable) "text 'true' as '1'";
	  //variant (enable) "text 'false' as '0'";
	  //variant (disable) "text 'true' as '1'";
	  //variant (disable) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record DeviceInfo
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String deviceLabel,
		XSD.String manufacturer,
		XSD.String model,
		XSD.String deviceType,
		XSD.String fwVersion,
		XSD.String swVersion,
		XSD.String hwVersion,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record DeviceInfoAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String deviceLabel optional,
		XSD.String manufacturer optional,
		XSD.String model optional,
		XSD.String deviceType optional,
		XSD.String fwVersion optional,
		XSD.String swVersion optional,
		XSD.String hwVersion optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type enumerated ResourceType
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5),
		int6(6),
		int7(7),
		int8(8),
		int9(9),
		int10(10),
		int11(11),
		int12(12),
		int13(13),
		int14(14),
		int15(15),
		int16(16),
		int17(17),
		int18(18),
		int19(19),
		int20(20),
		int21(21),
		int22(22),
		int23(23),
		int10001(10001),
		int10002(10002),
		int10003(10003),
		int10004(10004),
		int10009(10009),
		int10010(10010),
		int10013(10013),
		int10014(10014),
		int10016(10016),
		int10018(10018)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated CseTypeID
	{
		int1(1),
		int2(2),
		int3(3)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated LocationSource
	{
		int1(1),
		int2(2),
		int3(3)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated StdEventCats
	{
		int2(2),
		int3(3),
		int4(4)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated Operation
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated ResponseType
	{
		int1(1),
		int2(2),
		int3(3)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated ResultContent
	{
		int0(0),
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5),
		int6(6),
		int7(7)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated DiscResType
	{
		int1(1),
		int2(2)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated ResponseStatusCode
	{
		int1000(1000),
		int2000(2000),
		int2001(2001),
		int2002(2002),
		int2004(2004),
		int4000(4000),
		int4004(4004),
		int4005(4005),
		int4008(4008),
		int4101(4101),
		int4102(4102),
		int4103(4103),
		int4104(4104),
		int4105(4105),
		int4106(4106),
		int4107(4107),
		int4108(4108),
		int4109(4109),
		int4110(4110),
		int5000(5000),
		int5001(5001),
		int5103(5103),
		int5105(5105),
		int5106(5106),
		int5203(5203),
		int5204(5204),
		int5205(5205),
		int5206(5206),
		int5207(5207),
		int5209(5209),
		int6003(6003),
		int6005(6005),
		int6010(6010),
		int6020(6020),
		int6021(6021),
		int6022(6022),
		int6023(6023),
		int6024(6024),
		int6025(6025),
		int6026(6026),
		int6028(6028),
		int6029(6029)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated RequestStatus
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated MemberType
	{
		int0(0),
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5),
		int6(6),
		int7(7),
		int8(8),
		int9(9),
		int10(10),
		int11(11),
		int12(12),
		int13(13),
		int14(14),
		int15(15),
		int16(16),
		int17(17),
		int18(18),
		int19(19),
		int20(20),
		int21(21),
		int22(22),
		int23(23),
		int10001(10001),
		int10002(10002),
		int10003(10003),
		int10004(10004),
		int10009(10009),
		int10010(10010),
		int10013(10013),
		int10014(10014),
		int10016(10016),
		int10018(10018),
		int20001(20001),
		int20002(20002)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated ConsistencyStrategy
	{
		int1(1),
		int2(2),
		int3(3)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated CmdType
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5),
		int6(6),
		int7(7)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated ExecModeType
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated ExecStatusType
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5),
		int6(6)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated ExecResultType
	{
		int0(0),
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5),
		int6(6),
		int7(7),
		int8(8),
		int9(9),
		int10(10),
		int11(11),
		int12(12),
		int13(13),
		int14(14),
		int15(15),
		int16(16),
		int19(19),
		int20(20),
		int21(21),
		int22(22),
		int23(23),
		int24(24),
		int25(25),
		int26(26),
		int27(27),
		int28(28),
		int29(29),
		int30(30),
		int31(31)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated PendingNotification
	{
		int1(1),
		int2(2)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated NotificationContentType
	{
		int1(1),
		int2(2),
		int3(3)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated NotificationEventType
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated Status
	{
		int1(1),
		int2(2),
		int3(3)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated BatteryStatus
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5),
		int6(6),
		int7(7)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated MgmtDefinition
	{
		int0(0),
		int1001(1001),
		int1002(1002),
		int1003(1003),
		int1004(1004),
		int1005(1005),
		int1006(1006),
		int1007(1007),
		int1008(1008),
		int1009(1009),
		int1010(1010),
		int1011(1011),
		int1012(1012),
		int1013(1013),
		int1014(1014),
		int1015(1015),
		int1016(1016),
		int1017(1017),
		int1018(1018),
		int1019(1019)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated LogTypeId
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated LogStatus
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated EventType
	{
		int1(1),
		int2(2),
		int3(3)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated StatsRuleStatusType
	{
		int1(1),
		int2(2)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated StatModelType
	{
		int1(1)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated EncodingType
	{
		int0(0),
		int1(1),
		int2(2)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};




	type enumerated AccessControlOperations
	{
		int1(1),
		int2(2),
		int3(3),
		int4(4),
		int5(5),
		int6(6),
		int7(7),
		int8(8),
		int9(9),
		int10(10),
		int11(11),
		int12(12),
		int13(13),
		int14(14),
		int15(15),
		int16(16),
		int17(17),
		int18(18),
		int19(19),
		int20(20),
		int21(21),
		int22(22),
		int23(23),
		int24(24),
		int25(25),
		int26(26),
		int27(27),
		int28(28),
		int29(29),
		int30(30),
		int31(31),
		int32(32),
		int33(33),
		int34(34),
		int35(35),
		int36(36),
		int37(37),
		int38(38),
		int39(39),
		int40(40),
		int41(41),
		int42(42),
		int43(43),
		int44(44),
		int45(45),
		int46(46),
		int47(47),
		int48(48),
		int49(49),
		int50(50),
		int51(51),
		int52(52),
		int53(53),
		int54(54),
		int55(55),
		int56(56),
		int57(57),
		int58(58),
		int59(59),
		int60(60),
		int61(61),
		int62(62),
		int63(63)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type enumerated FilterUsage
	{
		int1(1),
		int2(2)
	}
	with {
	  variant "useNumber";
	  variant "name as uncapitalized";
	};


	type record EventConfig
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		XSD.ID creator,
		XSD.String eventID,
		EventType eventType,
		Timestamp eventStart optional,
		Timestamp eventEnd optional,
		record of Operation operationType,
		XSD.NonNegativeInteger dataSize optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (operationType) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record EventLog
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		LogTypeId logTypeId,
		XSD.String logData,
		LogStatus logStatus,
		XSD.Boolean logStart,
		XSD.Boolean logStop,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (logStart) "text 'true' as '1'";
	  //variant (logStart) "text 'false' as '0'";
	  //variant (logStop) "text 'true' as '1'";
	  //variant (logStop) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record EventLogAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		LogTypeId logTypeId optional,
		XSD.String logData optional,
		LogStatus logStatus optional,
		XSD.Boolean logStart optional,
		XSD.Boolean logStop optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (logStart) "text 'true' as '1'";
	  //variant (logStart) "text 'false' as '0'";
	  //variant (logStop) "text 'true' as '1'";
	  //variant (logStop) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record ExecInstance
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ExecStatusType execStatus,
		ExecResultType execResult,
		XSD.Boolean execDisable optional,
		NodeID execTarget,
		ExecModeType execMode optional,
		XSD.Duration execFrequency optional,
		XSD.Duration execDelay optional,
		XSD.NonNegativeInteger execNumber optional,
		ExecReqArgsListType execReqArgs optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (execDisable) "text 'true' as '1'";
	  //variant (execDisable) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record Firmware
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String version,
		XSD.String firmwareName,
		XSD.AnyURI uRL,
		XSD.Boolean update,
		ActionStatus updateStatus,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (uRL) "name as capitalized";
	  //variant (update) "text 'true' as '1'";
	  //variant (update) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record FirmwareAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String version optional,
		XSD.String firmwareName optional,
		XSD.AnyURI uRL optional,
		XSD.Boolean update optional,
		ActionStatus updateStatus optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (uRL) "name as capitalized";
	  //variant (update) "text 'true' as '1'";
	  //variant (update) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record Group
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		XSD.ID creator optional,
		MemberType memberType,
		XSD.NonNegativeInteger currentNrOfMembers,
		XSD.PositiveInteger maxNrOfMembers,
		record of XSD.AnyURI memberIDs,
		ListOfURIs membersAccessControlPolicyIDs optional,
		XSD.Boolean memberTypeValidated optional,
		ConsistencyStrategy consistencyStrategy optional,
		XSD.String groupName optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (memberIDs) "list";
	  //variant (memberTypeValidated) "text 'true' as '1'";
	  //variant (memberTypeValidated) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record GroupAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MemberType memberType optional,
		XSD.NonNegativeInteger currentNrOfMembers optional,
		XSD.PositiveInteger maxNrOfMembers optional,
		record of XSD.AnyURI memberIDs,
		ListOfURIs membersAccessControlPolicyIDs optional,
		XSD.Boolean memberTypeValidated optional,
		ConsistencyStrategy consistencyStrategy optional,
		XSD.String groupName optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (memberIDs) "list";
	  //variant (memberTypeValidated) "text 'true' as '1'";
	  //variant (memberTypeValidated) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record LocationPolicy
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		LocationSource locationSource,
		XSD.Duration locationUpdatePeriod optional,
		NodeID locationTargetID optional,
		XSD.AnyURI locationServer optional,
		XSD.AnyURI locationContainerID optional,
		XSD.String locationContainerName optional,
		XSD.String locationStatus,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record LocationPolicyAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		LocationSource locationSource optional,
		XSD.Duration locationUpdatePeriod optional,
		NodeID locationTargetID optional,
		XSD.AnyURI locationServer optional,
		XSD.AnyURI locationContainerID optional,
		XSD.String locationContainerName optional,
		XSD.String locationStatus optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};


	type record M2mServiceSubscriptionProfile
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ServiceSubscribedNode serviceSubscribedNode,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record Memory
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.UnsignedLong memAvailable,
		XSD.UnsignedLong memTotal,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record MemoryAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.UnsignedLong memAvailable optional,
		XSD.UnsignedLong memTotal optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record MgmtCmd
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		XSD.String description optional,
		CmdType cmdType,
		ExecReqArgsListType execReqArgs optional,
		XSD.Boolean execEnable,
		NodeID execTarget,
		ExecModeType execMode optional,
		XSD.Duration execFrequency optional,
		XSD.Duration execDelay optional,
		XSD.NonNegativeInteger execNumber optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ExecInstance execInstance,
				Subscription subscription
			} choice_list
		} choice
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (execEnable) "text 'true' as '1'";
	  //variant (execEnable) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record Node
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		NodeID nodeID,
		XSD.ID hostedCSELink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Memory memory,
				Battery battery,
				AreaNwkInfo areaNwkInfo,
				AreaNwkDeviceInfo areaNwkDeviceInfo,
				Firmware firmware,
				Software software,
				DeviceInfo deviceInfo,
				DeviceCapability deviceCapability,
				Reboot reboot,
				EventLog eventLog,
				CmdhPolicy cmdhPolicy,
				ActiveCmdhPolicy activeCmdhPolicy,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record NodeAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		NodeID nodeID,
		XSD.ID hostedCSELink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				MemoryAnnc memoryAnnc,
				BatteryAnnc batteryAnnc,
				AreaNwkInfoAnnc areaNwkInfoAnnc,
				AreaNwkDeviceInfoAnnc areaNwkDeviceInfoAnnc,
				FirmwareAnnc firmwareAnnc,
				SoftwareAnnc softwareAnnc,
				DeviceInfoAnnc deviceInfoAnnc,
				DeviceCapabilityAnnc deviceCapabilityAnnc,
				RebootAnnc rebootAnnc,
				EventLogAnnc eventLogAnnc,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type Notification_1 Notification
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};


	type AggregatedNotification_1 AggregatedNotification
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};


	type record AggregatedNotification_1
	{
		record of Notification notification_list
	}
	with {
	  variant "name as 'aggregatedNotification'";
	  variant (notification_list) "untagged";
	  variant (notification_list[-]) "name as 'notification'";
	};

//	TODO To be added
  type union Representation {
	  Resource_2 resource, 
	  ResponsePrimitive responsePrimitive, 
	  XSD.AnyURI uRI
  }
  with {
  	variant "name as 'representation'";
	variant (uRI) "name as capitalized";
  }

	type record Notification_1
	{
		record {
			//XSD.AnyType representation optional,
			Representation representation optional,
			record {
				Operation operation optional,
				XSD.ID originator optional
			} operationMonitor optional,
			NotificationEventType notificationEventType optional
		} notificationEvent optional,
		XSD.Boolean verificationRequest optional,
		XSD.Boolean subscriptionDeletion optional,
		XSD.AnyURI subscriptionReference optional,
		XSD.ID creator optional,
		XSD.AnyURI notificationForwardingURI optional
	}
	with {
	  variant "name as 'notification'";
	  //variant (verificationRequest) "text 'true' as '1'";
	  //variant (verificationRequest) "text 'false' as '0'";
	  //variant (subscriptionDeletion) "text 'true' as '1'";
	  //variant (subscriptionDeletion) "text 'false' as '0'";
	};


	type record PollingChannel
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};


	type record Reboot
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.Boolean reboot,
		XSD.Boolean factoryReset,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (reboot) "text 'true' as '1'";
	  //variant (reboot) "text 'false' as '0'";
	  //variant (factoryReset) "text 'true' as '1'";
	  //variant (factoryReset) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record RebootAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.Boolean reboot optional,
		XSD.Boolean factoryReset optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (reboot) "text 'true' as '1'";
	  //variant (reboot) "text 'false' as '0'";
	  //variant (factoryReset) "text 'true' as '1'";
	  //variant (factoryReset) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record RemoteCSE
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		CseTypeID cseType optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI cSEBase,
		XSD.ID cSE_ID,
		ExternalID m2M_Ext_ID optional,
		TriggerRecipientID trigger_Recipient_ID optional,
		XSD.Boolean requestReachability,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Container container,
				ContainerAnnc containerAnnc,
				Group group_,
				GroupAnnc groupAnnc,
				AccessControlPolicy accessControlPolicy,
				AccessControlPolicyAnnc accessControlPolicyAnnc,
				Subscription subscription,
				PollingChannel pollingChannel,
				Schedule schedule,
				NodeAnnc nodeAnnc,
				RemoteCSEAnnc remoteCSEAnnc,
				AEAnnc aEAnnc,
				LocationPolicyAnnc locationPolicyAnnc
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (cSEBase) "name as capitalized";
	  variant (cSE_ID) "name as 'CSE-ID'";
	  variant (m2M_Ext_ID) "name as 'M2M-Ext-ID'";
	  variant (trigger_Recipient_ID) "name as 'Trigger-Recipient-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	  variant (choice.choice_list[-].aEAnnc) "name as capitalized";
	};


	type record RemoteCSEAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		CseTypeID cseType optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI cSEBase optional,
		XSD.ID cSE_ID optional,
		XSD.Boolean requestReachability optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				NodeAnnc nodeAnnc,
				Container container,
				ContainerAnnc containerAnnc,
				Group group_,
				GroupAnnc groupAnnc,
				AccessControlPolicy accessControlPolicy,
				AccessControlPolicyAnnc accessControlPolicyAnnc,
				Subscription subscription,
				PollingChannel pollingChannel,
				ScheduleAnnc scheduleAnnc,
				LocationPolicyAnnc locationPolicyAnnc,
				RemoteCSEAnnc remoteCSEAnnc,
				AEAnnc aEAnnc
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (cSEBase) "name as capitalized";
	  variant (cSE_ID) "name as 'CSE-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	  variant (choice.choice_list[-].aEAnnc) "name as capitalized";
	};


	type record RequestPrimitive
	{
		Operation operation,
		XSD.AnyURI to_,
		XSD.ID from_ optional,
		RequestID requestIdentifier,
		ResourceType resourceType optional,
		PrimitiveContent primitiveContent optional,
		XSD.AnySimpleType role optional,
		Timestamp originatingTimestamp optional,
		AbsRelTimestamp requestExpirationTimestamp optional,
		AbsRelTimestamp resultExpirationTimestamp optional,
		AbsRelTimestamp operationExecutionTime optional,
		ResponseTypeInfo responseType optional,
		AbsRelTimestamp resultPersistence optional,
		ResultContent resultContent optional,
		EventCat eventCategory optional,
		XSD.Boolean deliveryAggregation optional,
		XSD.String groupRequestIdentifier optional,
		FilterCriteria filterCriteria optional,
		DiscResType discoveryResultType optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (to_) "name as 'to'";
	  variant (from_) "name as 'from'";
	  //variant (deliveryAggregation) "text 'true' as '1'";
	  //variant (deliveryAggregation) "text 'false' as '0'";
	};


	type AttributeList_1 AttributeList
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};


	type record Request
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		XSD.NonNegativeInteger stateTag,
		Operation operation,
		XSD.AnyURI target,
		XSD.ID originator,
		RequestID requestID,
		MetaInformation metaInformation,
		PrimitiveContent primitiveContent,
		RequestStatus requestStatus,
		OperationResult operationResult,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record ResponsePrimitive
	{
		ResponseStatusCode responseStatusCode,
		RequestID requestIdentifier,
		PrimitiveContent primitiveContent optional,
		XSD.ID to_ optional,
		XSD.ID from_ optional,
		Timestamp originatingTimestamp optional,
		AbsRelTimestamp resultExpirationTimestamp optional,
		EventCat eventCategory optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (to_) "name as 'to'";
	  variant (from_) "name as 'from'";
	};


	type ResourceWrapper Resource
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};


	type record length(0 .. infinity) of XSD.AnyURI URIList
	with {
	  variant "name as uncapitalized";
	  variant "list";
	};


	type XSD.AnyURI URI
	with {
	  variant "element";
	};


	type AggregatedResponse_1 AggregatedResponse
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};


	type XSD.String DebugInfo
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};


	type record ResourceWrapper//Make of union elements type _optional
	{
		union {
			AccessControlPolicy_optional accessControlPolicy,
			ActiveCmdhPolicy activeCmdhPolicy,
			AE_optional aE,
			AreaNwkDeviceInfo areaNwkDeviceInfo,
			AreaNwkInfo areaNwkInfo,
			Battery battery,
			CmdhBuffer cmdhBuffer,
			CmdhDefaults cmdhDefaults,
			CmdhDefEcValue cmdhDefEcValue,
			CmdhEcDefParamValues cmdhEcDefParamValues,
			CmdhLimits cmdhLimits,
			CmdhNetworkAccessRules cmdhNetworkAccessRules,
			CmdhNwAccessRule cmdhNwAccessRule,
			CmdhPolicy cmdhPolicy,
			Container_optional container,
			ContentInstance_optional contentInstance,
			CSEBase_optional cSEBase,
			Delivery_optional delivery,
			DeviceCapability deviceCapability,
			DeviceInfo deviceInfo,
			EventConfig eventConfig,
			EventLog eventLog,
			ExecInstance execInstance,
			Firmware firmware,
			Group_optional group_,
			LocationPolicy_optional locationPolicy,
			M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile,
			Memory memory,
			MgmtCmd_optional mgmtCmd,
			Node_optional node,
			Notification notification,
			PollingChannel_optional pollingChannel,
			Reboot reboot,
			RemoteCSE_optional remoteCSE,
			Request_optional request,
			RequestPrimitive requestPrimitive,
			ResponsePrimitive responsePrimitive,
			Schedule_optional schedule,
			ServiceSubscribedAppRule_optional serviceSubscribedAppRule,
			ServiceSubscribedNode_optional serviceSubscribedNode,
			Software software,
			StatsCollect_optional statsCollect,
			StatsConfig_optional statsConfig,
			Subscription_optional subscription
		} choice,
		XSD.AnyURI uRI
	}
	with {
	  variant "name as uncapitalized";
	  variant (choice) "untagged";
	  variant (choice.aE) "name as capitalized";
	  variant (choice.cSEBase) "name as capitalized";
	  variant (choice.group_) "name as 'group'";
	  variant (uRI) "name as capitalized";
	};


	type record AggregatedResponse_1
	{
		record of ResponsePrimitive responsePrimitive_list
	}
	with {
	  variant "name as 'aggregatedResponse'";
	  variant (responsePrimitive_list) "untagged";
	  variant (responsePrimitive_list[-]) "name as 'responsePrimitive'";
	};


	type record Schedule
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		ScheduleEntries scheduleElement,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record ScheduleAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		Timestamp expirationTime,
		XSD.AnyURI link,
		ScheduleEntries scheduleElement optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};


	type record ServiceSubscribedAppRule
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfM2MID applicableCredIDs optional,
		ListOfM2MID allowedApp_IDs optional,
		ListOfM2MID allowedAEs optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (allowedApp_IDs) "name as 'allowedApp-IDs'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record ServiceSubscribedNode
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		NodeID nodeID,
		XSD.ID cSE_ID optional,
		record of DeviceID deviceIdentifier,
		ListOfURIs ruleLinks optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (cSE_ID) "name as 'CSE-ID'";
	  variant (deviceIdentifier) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record Software
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional, //TODO To be put as optional
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String version,
		XSD.String softwareName,
		XSD.AnyURI uRL,
		XSD.Boolean install,
		XSD.Boolean uninstall,
		ActionStatus installStatus,
		XSD.Boolean activate_ optional,
		XSD.Boolean deactivate_ optional,
		ActionStatus activeStatus optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (uRL) "name as capitalized";
	  //variant (install) "text 'true' as '1'";
	  //variant (install) "text 'false' as '0'";
	  //variant (uninstall) "text 'true' as '1'";
	  //variant (uninstall) "text 'false' as '0'";
	  variant (activate_) "name as 'activate'";
	  //variant (activate_) "text 'true' as '1'";
	  //variant (activate_) "text 'false' as '0'";
	  variant (deactivate_) "name as 'deactivate'";
	  //variant (deactivate_) "text 'true' as '1'";
	  //variant (deactivate_) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record SoftwareAnnc
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs,
		Timestamp expirationTime,
		XSD.AnyURI link,
		MgmtDefinition mgmtDefinition,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.String version optional,
		XSD.String softwareName optional,
		XSD.AnyURI uRL optional,
		XSD.Boolean install optional,
		XSD.Boolean uninstall optional,
		ActionStatus installStatus optional,
		XSD.Boolean activate_ optional,
		XSD.Boolean deactivate_ optional,
		ActionStatus activeStatus optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (uRL) "name as capitalized";
	  //variant (install) "text 'true' as '1'";
	  //variant (install) "text 'false' as '0'";
	  //variant (uninstall) "text 'true' as '1'";
	  //variant (uninstall) "text 'false' as '0'";
	  variant (activate_) "name as 'activate'";
	  //variant (activate_) "text 'true' as '1'";
	  //variant (activate_) "text 'false' as '0'";
	  variant (deactivate_) "name as 'deactivate'";
	  //variant (deactivate_) "text 'true' as '1'";
	  //variant (deactivate_) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record StatsCollect
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		XSD.ID creator,
		XSD.String statsCollectID,
		XSD.ID collectingEntityID,
		XSD.ID collectedEntityID,
		StatsRuleStatusType statsRuleStatus,
		StatModelType statModel,
		ScheduleEntries collectPeriod optional,
		XSD.String eventID optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};


	type record StatsConfig
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		XSD.ID creator,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				EventConfig eventConfig,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record Subscription
	{
		ResourceName resourceName,
		ResourceType resourceType,
		XSD.ID resourceID,
		NhURI parentID,
		Timestamp creationTime,
		Timestamp lastModifiedTime,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime,
		EventNotificationCriteria eventNotificationCriteria optional,
		XSD.PositiveInteger expirationCounter optional,
		ListOfURIs notificationURI,
		XSD.AnyURI groupID optional,
		XSD.AnyURI notificationForwardingURI optional,
		BatchNotify batchNotify optional,
		RateLimit rateLimit optional,
		XSD.PositiveInteger preSubscriptionNotify optional,
		PendingNotification pendingNotification optional,
		XSD.PositiveInteger notificationStoragePriority optional,
		XSD.Boolean latestNotify optional,
		NotificationContentType notificationContentType,
		EventCat notificationEventCat optional,
		XSD.ID creator optional,
		XSD.AnyURI subscriberURI optional,
		union {
			ChildResourceRef childResource,
			Schedule schedule
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (latestNotify) "text 'true' as '1'";
	  //variant (latestNotify) "text 'false' as '0'";
	  variant (choice) "untagged";
	};


	type record EventNotificationCriteria
	{
		Timestamp createdBefore optional,
		Timestamp createdAfter optional,
		Timestamp modifiedSince optional,
		Timestamp unmodifiedSince optional,
		XSD.PositiveInteger stateTagSmaller optional,
		XSD.NonNegativeInteger stateTagBigger optional,
		Timestamp expireBefore optional,
		Timestamp expireAfter optional,
		XSD.NonNegativeInteger sizeAbove optional,
		XSD.PositiveInteger sizeBelow optional,
		record length(0 .. 5) of Operation operationMonitor_list,
		AttributeList_1 attribute optional,
		record length(0 .. 4) of NotificationEventType notificationEventType_list
	}
	with {
	  variant "name as uncapitalized";
	  variant (operationMonitor_list) "untagged";
	  variant (operationMonitor_list[-]) "name as 'operationMonitor'";
	  variant (notificationEventType_list) "untagged";
	  variant (notificationEventType_list[-]) "name as 'notificationEventType'";
	};


	type record BatchNotify
	{
		XSD.NonNegativeInteger number,
		XSD.Duration duration
	}
	with {
	  variant "name as uncapitalized";
	};


	type record RateLimit
	{
		XSD.NonNegativeInteger maxNrOfNotify optional,
		XSD.Duration timeWindow optional
	}
	with {
	  variant "name as uncapitalized";
	};

	/* ******************************************
	 * 		oneM2M Abstract Service Primitives 
	 * ******************************************
	*/
		/**
		 * @desc Type for the oneM2M primitives exchange
		 * @member primitive oneM2M primitive
		 * @member host IP Address of the destination
		 * @member xmlNamespace XML Namespace to be used
		 * @member protocolBinding Protocol binding to be used
		 * @member serialization Serialization to be used
		 * @member forcedFields Attributes that need to be processed differently by the test adapter:
		 * 			- empty fields (for instance, for attribute deletion), i.e. <labels></labels> -> value_ to be omitted
		 * 			- invalid values, i.e. <maxNrOfInstances>-1</maxNrOfInstances>
		 */
		type record MsgOut {
			union {
				RequestPrimitive requestPrimitive,
				ResponsePrimitive responsePrimitive
			} primitive, 
			charstring host optional,
			charstring xmlNamespace optional, 
			charstring protocolBinding optional,
			charstring serialization optional,
			AttributeAux_list forcedFields optional
		}
		with {
			encode ""
		}
	
		/**
		 * @desc Type for the oneM2M primitives exchange
		 * @member primitive oneM2M primitive
		 */
		type record MsgIn {
			union {
				RequestPrimitive requestPrimitive,
				ResponsePrimitive responsePrimitive
			} primitive, 
			AttributeList_1 nullFields optional
		}
		with {
			encode ""
		}
	
		type record AcRequestPrimitive {
			charstring event,
			anytype data
		}
		with {
			encode "adapter";
		}
	
		type record AcResponsePrimitive {
			charstring event,
			anytype data
		}
		with {
			encode "adapter";
		}
		
		type record UtTriggerPrimitive {
			RequestPrimitive requestPrimitive, 
			AttributeAux_list forcedFields optional
		}
		with {
			encode "UpperTester"
		}
		
		type ResponsePrimitive UtTriggerAckPrimitive
		with {			
			encode "UpperTester"
		}
		
		type record AttributeAux {
			XSD.NCName name,
			charstring value_ optional
		};
	
		type record of AttributeAux AttributeAux_list;


/* Additional types */

group optionalResourceTypes {
  
	type record AccessControlPolicy_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			SetOfAcrs privileges optional,
			SetOfAcrs selfPrivileges optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of Subscription subscription_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.subscription_list) "untagged";
		  variant (choice.subscription_list[-]) "name as 'subscription'";
		};

		type record AccessControlPolicyAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			SetOfAcrs privileges optional,
			SetOfAcrs selfPrivileges optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of Subscription subscription_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.subscription_list) "untagged";
		  variant (choice.subscription_list[-]) "name as 'subscription'";
		};

		type record AE_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			XSD.String appName optional,
			XSD.String app_ID optional,
			XSD.ID aE_ID optional,
			PoaList pointOfAccess optional,
			XSD.AnyURI ontologyRef optional,
			XSD.AnyURI nodeLink optional,
			XSD.Boolean requestReachability optional,
			Serializations contentSerialization optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Container container,
					Group group_,
					AccessControlPolicy accessControlPolicy,
					Subscription subscription,
					PollingChannel pollingChannel,
					Schedule schedule
				} choice_list
			} choice optional
		}
		with {
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		  variant (app_ID) "name as 'App-ID'";
		  variant (aE_ID) "name as 'AE-ID'";
		  //variant (requestReachability) "text 'true' as '1'";
		  //variant (requestReachability) "text 'false' as '0'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		  variant (choice.choice_list[-].group_) "name as 'group'";
		};

		type record AEAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			XSD.String appName optional,
			XSD.String app_ID optional,
			XSD.ID aE_ID optional,
			PoaList pointOfAccess optional,
			XSD.AnyURI ontologyRef optional,
			XSD.AnyURI nodeLink optional,
			XSD.Boolean requestReachability optional,
			Serializations contentSerialization optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Container container,
					ContainerAnnc containerAnnc,
					Group group_,
					GroupAnnc groupAnnc,
					AccessControlPolicy accessControlPolicy,
					AccessControlPolicyAnnc accessControlPolicyAnnc,
					Subscription subscription,
					ScheduleAnnc scheduleAnnc
				} choice_list
			} choice optional
		}
		with {
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (app_ID) "name as 'App-ID'";
		  variant (aE_ID) "name as 'AE-ID'";
		  //variant (requestReachability) "text 'true' as '1'";
		  //variant (requestReachability) "text 'false' as '0'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		  variant (choice.choice_list[-].group_) "name as 'group'";
		};

		type record MgmtResource_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			MgmtDefinition mgmtDefinition optional,
			ListOfURIs objectIDs optional,
			ListOfURIs objectPaths optional,
			XSD.String description optional
		}
		with {
		  variant "name as uncapitalized";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		};

		type record AnnouncedMgmtResource_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			MgmtDefinition mgmtDefinition optional,
			ListOfURIs objectIDs optional,
			ListOfURIs objectPaths optional,
			XSD.String description optional
		}
		with {
		  variant "name as uncapitalized";
		  variant (resourceName) "attribute";
		};

		type record Container_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			XSD.NonNegativeInteger stateTag optional,
			XSD.ID creator optional,
			XSD.NonNegativeInteger maxNrOfInstances optional,
			XSD.NonNegativeInteger maxByteSize optional,
			XSD.NonNegativeInteger maxInstanceAge optional,
			XSD.NonNegativeInteger currentNrOfInstances optional,
			XSD.NonNegativeInteger currentByteSize optional,
			XSD.AnyURI locationID optional,
			XSD.AnyURI ontologyRef optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					ContentInstance contentInstance,
					Container container,
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record ContainerAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			XSD.NonNegativeInteger stateTag optional,
			XSD.NonNegativeInteger maxNrOfInstances optional,
			XSD.NonNegativeInteger maxByteSize optional,
			XSD.NonNegativeInteger maxInstanceAge optional,
			XSD.NonNegativeInteger currentNrOfInstances optional,
			XSD.NonNegativeInteger currentByteSize optional,
			XSD.AnyURI locationID optional,
			XSD.AnyURI ontologyRef optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					ContentInstance contentInstance,
					ContentInstanceAnnc contentInstanceAnnc,
					Container container,
					ContainerAnnc containerAnnc,
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record ContentInstance_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			XSD.NonNegativeInteger stateTag optional,
			XSD.ID creator optional,
			ContentInfo contentInfo optional,
			XSD.NonNegativeInteger contentSize optional,
			XSD.AnyURI ontologyRef optional,
			XSD.AnySimpleType content optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		};

		type record ContentInstanceAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			XSD.NonNegativeInteger stateTag optional,
			ContentInfo contentInfo optional,
			XSD.NonNegativeInteger contentSize optional,
			XSD.AnyURI ontologyRef optional,
			XSD.AnySimpleType content optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		};

		type record CSEBase_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			CseTypeID cseType optional,
			XSD.ID cSE_ID optional,
			ResourceTypeList_1 supportedResourceType optional,
			PoaList pointOfAccess optional,
			XSD.AnyURI nodeLink optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					RemoteCSE remoteCSE,
					RemoteCSEAnnc remoteCSEAnnc,
					Node node,
					AE aE,
					Container container,
					Group group_,
					AccessControlPolicy accessControlPolicy,
					Subscription subscription,
					MgmtCmd mgmtCmd,
					LocationPolicy locationPolicy,
					StatsConfig statsConfig,
					StatsCollect statsCollect,
					Request request,
					Delivery delivery,
					Schedule schedule,
					M2mServiceSubscriptionProfile m2mServiceSubscriptionProfile,
					ServiceSubscribedAppRule serviceSubscribedAppRule
				} choice_list
			} choice optional
		}
		with {
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (cSE_ID) "name as 'CSE-ID'";
		  variant (supportedResourceType) "list";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		  variant (choice.choice_list[-].aE) "name as capitalized";
		  variant (choice.choice_list[-].group_) "name as 'group'";
		};
		
		type record Delivery_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.NonNegativeInteger stateTag optional,
			XSD.ID source optional,
			XSD.ID target optional,
			Timestamp lifespan optional,
			EventCat eventCat optional,
			DeliveryMetaData deliveryMetaData optional,
			AggregatedRequest aggregatedRequest optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record Group_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			XSD.ID creator optional,
			MemberType memberType optional,
			XSD.NonNegativeInteger currentNrOfMembers optional,
			XSD.PositiveInteger maxNrOfMembers optional,
			ListOfURIs memberIDs optional,
			ListOfURIs membersAccessControlPolicyIDs optional,
			XSD.Boolean memberTypeValidated optional,
			ConsistencyStrategy consistencyStrategy optional,
			XSD.String groupName optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of Subscription subscription_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		  variant (memberIDs) "list";
		  //variant (memberTypeValidated) "text 'true' as '1'";
		  //variant (memberTypeValidated) "text 'false' as '0'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.subscription_list) "untagged";
		  variant (choice.subscription_list[-]) "name as 'subscription'";
		};

		type record GroupAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			MemberType memberType optional,
			XSD.NonNegativeInteger currentNrOfMembers optional,
			XSD.PositiveInteger maxNrOfMembers optional,
			ListOfURIs memberIDs optional,
			ListOfURIs membersAccessControlPolicyIDs optional,
			XSD.Boolean memberTypeValidated optional,
			ConsistencyStrategy consistencyStrategy optional,
			XSD.String groupName optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of Subscription subscription_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (memberIDs) "list";
		  //variant (memberTypeValidated) "text 'true' as '1'";
		  //variant (memberTypeValidated) "text 'false' as '0'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.subscription_list) "untagged";
		  variant (choice.subscription_list[-]) "name as 'subscription'";
		};

		type record LocationPolicy_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			LocationSource locationSource optional,
			XSD.Duration locationUpdatePeriod optional,
			NodeID locationTargetID optional,
			XSD.AnyURI locationServer optional,
			XSD.AnyURI locationContainerID optional,
			XSD.String locationContainerName optional,
			XSD.String locationStatus optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record LocationPolicyAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			LocationSource locationSource optional,
			XSD.Duration locationUpdatePeriod optional,
			NodeID locationTargetID optional,
			XSD.AnyURI locationServer optional,
			XSD.AnyURI locationContainerID optional,
			XSD.String locationContainerName optional,
			XSD.String locationStatus optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		};
		
		type record M2mServiceSubscriptionProfile_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					ServiceSubscribedNode serviceSubscribedNode,
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};
		
		type record MgmtCmd_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.String description optional,
			CmdType cmdType optional,
			ExecReqArgsListType execReqArgs optional,
			XSD.Boolean execEnable optional,
			NodeID execTarget optional,
			ExecModeType execMode optional,
			XSD.Duration execFrequency optional,
			XSD.Duration execDelay optional,
			XSD.NonNegativeInteger execNumber optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					ExecInstance execInstance,
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  //variant (execEnable) "text 'true' as '1'";
		  //variant (execEnable) "text 'false' as '0'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record Node_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			NodeID nodeID optional,
			XSD.ID hostedCSELink optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Memory memory,
					Battery battery,
					AreaNwkInfo areaNwkInfo,
					AreaNwkDeviceInfo areaNwkDeviceInfo,
					Firmware firmware,
					Software software,
					DeviceInfo deviceInfo,
					DeviceCapability deviceCapability,
					Reboot reboot,
					EventLog eventLog,
					CmdhPolicy cmdhPolicy,
					ActiveCmdhPolicy activeCmdhPolicy,
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record NodeAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			NodeID nodeID optional,
			XSD.ID hostedCSELink optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					MemoryAnnc memoryAnnc,
					BatteryAnnc batteryAnnc,
					AreaNwkInfoAnnc areaNwkInfoAnnc,
					AreaNwkDeviceInfoAnnc areaNwkDeviceInfoAnnc,
					FirmwareAnnc firmwareAnnc,
					SoftwareAnnc softwareAnnc,
					DeviceInfoAnnc deviceInfoAnnc,
					DeviceCapabilityAnnc deviceCapabilityAnnc,
					RebootAnnc rebootAnnc,
					EventLogAnnc eventLogAnnc,
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record PollingChannel_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			Timestamp expirationTime optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		};

		type record RemoteCSE_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			CseTypeID cseType optional,
			PoaList pointOfAccess optional,
			XSD.AnyURI cSEBase optional,
			XSD.ID cSE_ID optional,
			ExternalID m2M_Ext_ID optional,
			TriggerRecipientID trigger_Recipient_ID optional,
			XSD.Boolean requestReachability optional,
			XSD.AnyURI nodeLink optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Container container,
					ContainerAnnc containerAnnc,
					Group group_,
					GroupAnnc groupAnnc,
					AccessControlPolicy accessControlPolicy,
					AccessControlPolicyAnnc accessControlPolicyAnnc,
					Subscription subscription,
					PollingChannel pollingChannel,
					Schedule schedule,
					NodeAnnc nodeAnnc,
					RemoteCSEAnnc remoteCSEAnnc,
					AEAnnc aEAnnc,
					LocationPolicyAnnc locationPolicyAnnc
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		  variant (cSEBase) "name as capitalized";
		  variant (cSE_ID) "name as 'CSE-ID'";
		  variant (m2M_Ext_ID) "name as 'M2M-Ext-ID'";
		  variant (trigger_Recipient_ID) "name as 'Trigger-Recipient-ID'";
		  //variant (requestReachability) "text 'true' as '1'";
		  //variant (requestReachability) "text 'false' as '0'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		  variant (choice.choice_list[-].group_) "name as 'group'";
		  variant (choice.choice_list[-].aEAnnc) "name as capitalized";
		};

		type record RemoteCSEAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			CseTypeID cseType optional,
			PoaList pointOfAccess optional,
			XSD.AnyURI cSEBase optional,
			XSD.ID cSE_ID optional,
			XSD.Boolean requestReachability optional,
			XSD.AnyURI nodeLink optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					NodeAnnc nodeAnnc,
					Container container,
					ContainerAnnc containerAnnc,
					Group group_,
					GroupAnnc groupAnnc,
					AccessControlPolicy accessControlPolicy,
					AccessControlPolicyAnnc accessControlPolicyAnnc,
					Subscription subscription,
					PollingChannel pollingChannel,
					ScheduleAnnc scheduleAnnc,
					LocationPolicyAnnc locationPolicyAnnc,
					RemoteCSEAnnc remoteCSEAnnc,
					AEAnnc aEAnnc
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (cSEBase) "name as capitalized";
		  variant (cSE_ID) "name as 'CSE-ID'";
		  //variant (requestReachability) "text 'true' as '1'";
		  //variant (requestReachability) "text 'false' as '0'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		  variant (choice.choice_list[-].group_) "name as 'group'";
		  variant (choice.choice_list[-].aEAnnc) "name as capitalized";
		};
		
		type record Request_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfURIs dynamicAuthorizationConsultationIDs optional,
			XSD.NonNegativeInteger stateTag optional,
			Operation operation optional,
			XSD.AnyURI target optional,
			XSD.ID originator optional,
			RequestID requestID optional,
			MetaInformation metaInformation optional,
			PrimitiveContent primitiveContent optional,
			RequestStatus requestStatus optional,
			OperationResult operationResult optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record Schedule_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			Timestamp expirationTime optional,
			ListOfURIs announceTo optional,
			record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
			ScheduleEntries scheduleElement optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (announcedAttribute) "list";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record ScheduleAnnc_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			Timestamp expirationTime optional,
			XSD.AnyURI link optional,
			ScheduleEntries scheduleElement optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		};

		type record ServiceSubscribedAppRule_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			ListOfM2MID applicableCredIDs optional,
			ListOfM2MID allowedApp_IDs optional,
			ListOfM2MID allowedAEs optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of Subscription subscription_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (allowedApp_IDs) "name as 'allowedApp-IDs'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.subscription_list) "untagged";
		  variant (choice.subscription_list[-]) "name as 'subscription'";
		};
		
		type record ServiceSubscribedNode_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			NodeID nodeID optional,
			XSD.ID cSE_ID optional,
			record of DeviceID deviceIdentifier optional,
			ListOfURIs ruleLinks optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of Subscription subscription_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (cSE_ID) "name as 'CSE-ID'";
		  variant (deviceIdentifier) "list";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.subscription_list) "untagged";
		  variant (choice.subscription_list[-]) "name as 'subscription'";
		};
		
		type record StatsCollect_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.ID creator optional,
			XSD.String statsCollectID optional,
			XSD.ID collectingEntityID optional,
			XSD.ID collectedEntityID optional,
			StatsRuleStatusType statsRuleStatus optional,
			StatModelType statModel optional,
			ScheduleEntries collectPeriod optional,
			XSD.String eventID optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of Subscription subscription_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.subscription_list) "untagged";
		  variant (choice.subscription_list[-]) "name as 'subscription'";
		};
	
	
		type record StatsConfig_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			XSD.ID creator optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					EventConfig eventConfig,
					Subscription subscription
				} choice_list
			} choice optional
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

		type record Subscription_optional
		{
			ResourceName resourceName optional,
			ResourceType resourceType optional,
			XSD.ID resourceID optional,
			NhURI parentID optional,
			Timestamp creationTime optional,
			Timestamp lastModifiedTime optional,
			Labels labels optional,
			AcpType accessControlPolicyIDs optional,
			Timestamp expirationTime optional,
			EventNotificationCriteria eventNotificationCriteria optional,
			XSD.PositiveInteger expirationCounter optional,
			ListOfURIs notificationURI optional,
			XSD.AnyURI groupID optional,
			XSD.AnyURI notificationForwardingURI optional,
			BatchNotify batchNotify optional,
			RateLimit rateLimit optional,
			XSD.PositiveInteger preSubscriptionNotify optional,
			PendingNotification pendingNotification optional,
			XSD.PositiveInteger notificationStoragePriority optional,
			XSD.Boolean latestNotify optional,
			NotificationContentType notificationContentType optional,
			EventCat notificationEventCat optional,
			XSD.ID creator optional,
			XSD.AnyURI subscriberURI optional,
			union {
				record length(1 .. infinity) of ChildResourceRef childResource_list,
				record length(1 .. infinity) of union {
					Schedule schedule
				} choice_list
			} choice optional //TODO Replace type of choice union elements as other choice union elements (record length(1..infinity) of)
		}
		with {
		  variant "name as uncapitalized";
		  variant "element";
		  variant (resourceName) "attribute";
		  //variant (latestNotify) "text 'true' as '1'";
		  //variant (latestNotify) "text 'false' as '0'";
		  variant (choice) "untagged";
		  variant (choice.childResource_list) "untagged";
		  variant (choice.childResource_list[-]) "name as 'childResource'";
		  variant (choice.choice_list) "untagged";
		  variant (choice.choice_list[-]) "untagged";
		};

	
}
	
group invalidTypes {
		
	type record AE_update_invalid 
	{ 
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for AE
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.String appName optional,
		XSD.String app_ID optional,
		XSD.ID aE_ID optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean requestReachability optional,
		Serializations contentSerialization optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Container container,
				Group group_,
				AccessControlPolicy accessControlPolicy,
				Subscription subscription,
				PollingChannel pollingChannel,
				Schedule schedule
			} choice_list
		} choice optional
	}
	with {
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (app_ID) "name as 'App-ID'";
	  variant (aE_ID) "name as 'AE-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	};
       
	type record ACP_update_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for ACP
		Labels labels optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		SetOfAcrs privileges optional,
		SetOfAcrs selfPrivileges optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};		

	type record Container_update_invalid {
		
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Container
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.Integer stateTag optional,
		XSD.ID creator optional,
		XSD.Integer maxNrOfInstances optional,
		XSD.Integer maxByteSize optional,
		XSD.Integer maxInstanceAge optional,
		XSD.Integer currentNrOfInstances optional,
		XSD.Integer currentByteSize optional,
		XSD.AnyURI locationID optional,
		XSD.AnyURI ontologyRef optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ContentInstance contentInstance,
				Container container,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};		
       
	type record Group_update_invalid 
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Group
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.ID creator optional,
		MemberType memberType optional,
		XSD.NonNegativeInteger currentNrOfMembers optional,
		XSD.PositiveInteger maxNrOfMembers optional,
		ListOfURIs memberIDs optional,
		ListOfURIs membersAccessControlPolicyIDs optional,
		XSD.Boolean memberTypeValidated optional,
		ConsistencyStrategy consistencyStrategy optional,
		XSD.String groupName optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (memberIDs) "list";
	  //variant (memberTypeValidated) "text 'true' as '1'";
	  //variant (memberTypeValidated) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};
       
	type record PollingChannel_update_invalid 
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for PollingChannel
		Labels labels optional,
		Timestamp expirationTime optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};	
	
	type record Schedule_update_invalid 
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Schedule
		Labels labels optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		ScheduleEntries scheduleElement optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};		 
       
	type record Subscription_update_invalid 
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.NonNegativeInteger maxNrOfInstances optional,//Invalid field, non existing for Subscription
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		EventNotificationCriteria eventNotificationCriteria optional,
		XSD.PositiveInteger expirationCounter optional,
		ListOfURIs notificationURI optional,
		XSD.AnyURI groupID optional,
		XSD.AnyURI notificationForwardingURI optional,
		BatchNotify batchNotify optional,
		RateLimit rateLimit optional,
		XSD.PositiveInteger preSubscriptionNotify optional,
		PendingNotification pendingNotification optional,
		XSD.PositiveInteger notificationStoragePriority optional,
		XSD.Boolean latestNotify optional,
		NotificationContentType notificationContentType optional,
		EventCat notificationEventCat optional,
		XSD.ID creator optional,
		XSD.AnyURI subscriberURI optional,
		union {
			ChildResourceRef childResource,
			Schedule schedule
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (latestNotify) "text 'true' as '1'";
	  //variant (latestNotify) "text 'false' as '0'";
	  variant (choice) "untagged";
	};
       
	 type record LocationPolicy_update_invalid
	 {	
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Schedule
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		LocationSource locationSource optional,
		XSD.Duration locationUpdatePeriod optional,
		NodeID locationTargetID optional,
		XSD.AnyURI locationServer optional,
		XSD.AnyURI locationContainerID optional,
		XSD.String locationContainerName optional,
		XSD.String locationStatus optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
       
}//end group invalidTypes

group OtherTypes {
		
	type enumerated Configurations {
		e_cf01,
		e_cf02,
		e_cf02CseSimuMaster,
		e_cf03,
		e_cf04
	};
	
	type enumerated TestSystemRole {
		e_cse,
		e_ae
	};
		
	type NhURI ParentID;
    	
	type record MyResource {
		integer parentIndex,
		ResourceType resourceType,
		PrimitiveContent resource
	};
		
	type record of MyResource MyResourcesList;
		
	type record of integer IntegerList;
		
	type enumerated PrimitiveScope {
		e_cseRelative,
		e_spRelative, 
		e_absolute
	}
		
	type enumerated AddressingMethod {
		e_nonHierarchical,
		e_hierarchical
	}
		
	type union Resource_2 {
		//ResourceTypes
		AEAnnc_optional aEAnnc,
		AE_optional aE,
		AccessControlPolicy_optional accessControlPolicy,
		AccessControlPolicyAnnc_optional accessControlPolicyAnnc,
		ContentInstance_optional contentInstance,
		ContentInstanceAnnc_optional contentInstanceAnnc,
		Container_optional container,
		ContainerAnnc_optional containerAnnc,
		CSEBase_optional cSEBase,
		Group_optional group_,
		GroupAnnc_optional groupAnnc,
		LocationPolicy_optional locationPolicy,
		LocationPolicyAnnc_optional locationPolicyAnnc,
		MgmtResource_optional mgmtResource,//MgmtResource
		AnnouncedMgmtResource_optional announcedMgmtResource,//AnnouncedMgmtResource
		Node_optional node,
		NodeAnnc_optional nodeAnnc,
		PollingChannel_optional pollingChannel,
		RemoteCSE_optional remoteCSE,
		Schedule_optional schedule,
		ScheduleAnnc_optional scheduleAnnc,
		StatsConfig_optional statsConfig,
		StatsCollect_optional statsCollect,
		M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile,
		ServiceSubscribedAppRule_optional serviceSubscribedAppRule,
		Subscription_optional subscription
	}
	with {
		variant "untagged";
	}		
		
	type record of ResourceType ResourceTypeList_1
	with {
		variant "name as uncapitalized";
		variant "list";
	};
}

}
with {
  encode "XML";
  variant "namespace as 'http://www.onem2m.org/xml/protocols' prefix 'm2m'";
  variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
  extension "anytype AggregatedResponse, AggregatedNotification,Notification, ServiceSubscribedAppRule_optional, charstring, AnyURI, AttributeList, AE, AccessControlPolicy, AccessControlPolicy_optional, ACP_update_invalid, AE_optional, AE_update_invalid,AEAnnc_optional, Container_optional, CSEBase_optional, Container_update_invalid, ContentInstance_optional,  Group_optional, Group_update_invalid, Schedule_optional, Schedule_update_invalid, Subscription_optional, Subscription_update_invalid, PollingChannel_optional, PollingChannel_update_invalid, LocationPolicy_optional, LocationPolicy_update_invalid"
}